本站提倡有节制游戏,合理安排游戏时间,注意劳逸结合。

【创建订单源码笔记】【vsftpd源码包】【打印 源码 彩色】win32图文编辑器源码

2024-11-26 20:04:34 来源:知识 分类:知识

1.Lccwin32 C Compiler的Lccwin32 C Compiler使用介绍
2.Scintilla功能
3.WinASM studio实例图文教程
4.Windows系统中vscode的文编c/c++开发环境配置(一):下载和安装

win32图文编辑器源码

Lccwin32 C Compiler的Lccwin32 C Compiler使用介绍

       å£°æ˜Ž

       æœ¬æ–‡æ²¡æœ‰ä»»ä½•æ˜Žç¡®çš„或者含蓄的表达说明本文是完全正确的,对于应用本文内容所

       äº§ç”Ÿçš„任何结果,本人概不负责。

       è¯·åŽŸè°…本文在语言和语法的的运用上的错误,本人才疏学浅,这是不可避免的。

       ç›®å½•

       * 简介

       * 编译器的安装

       * Lcc-Win的一些基本概念

       * 写个小程序!

       * 使用工程管理

       * 第一个Windows程序

       * 程序生成向导

       * 使用WeditRes创建资源

       * 添加其它类型的资源

       * 使用非规格资源

       * 静态库和动态库

       ç®€ä»‹

       å…¶å®žæ‰€è°“的简介这个部分的内容趋向取决于作者。但是我所读过的一些指南都是由一个“简介”开始的,这部分的内容通常都是在重复读者会在下面看到的东西,但是也有的简介只是作者的一些想法。仔细的想一下,其实这个介绍并不是一件简单的事情。首先,如果你要是开门见山的直奔主题,这是不礼貌的,而且基于web的指南也不应该有超大个的简介,不应该让读者在这个东西上浪费时间和金钱。看来我的废话也够多的了,让我们切入正题。这个指南是单页的,建议你等浏览器下载完毕后保存一份拷贝来离线阅读。

       ç¼–译器的安装

       ç¼–译器的安装简单极了,只要把您下载的文件运行一下就OK了,应该不会遇到什么

       é—®é¢˜ã€‚但是注意安装的最后要编译库文件,可能要花点时间,要视你的机器速度而定。

       Lcc-Win的一些基本概念

       Lcc-Win编译系统是由多个文件构成的。它们的共同的任务是把文本格式的源代

       ç ç¼–译位可以运行的二进制格式。优良个重要的文件分别是编译器(lcc.exe)和连接

       å™¨ï¼ˆlcclnk.exe)。

       ç¼–译器是用来把你编写的文本翻译成处理器可以执行的格式的程序。连接器用来转

       æ¢ç¼–译器生成的二进制文件(通常叫做目标文件),并添加操作系统用来把程序调入内

       å­˜å¹¶æ‰§è¡Œæ‰€éœ€è¦çš„信息它可以把多个目标文件链接为一个单独的程可执行程序,这样就

       å¯ä»¥ä½¿ä½ å¯ä»¥æŠŠä¸€ä¸ªç¨‹åºçš„代码文档分割为几个模块,这个能力在你开发大型程序时是

       å¾ˆé‡è¦çš„。

       è™½ç„¶è¿™äº›å¬èµ·æ¥å¥½åƒååˆ†çš„简单,但是实际上并不是这个样子的。编辑器和链接器

       éœ€è¦ä½ åœ¨å‘½ä»¤è¡Œæ–¹å¼ä¸‹é”®å…¥ä½ è¦å»ºç«‹çš„程序的所有信息,这将需要你记住大量的命令行

       å‚数和各种各样的开关,这时就需要IDE——集成开发环境(wedit.exe)来提供方便了。

       IDE的基本功能是编辑文本,你可以在这个环境里编辑程序的源代码,但是远远不

       æ­¢æœ‰è¿™ä¸ªåŠŸèƒ½ã€‚它还给你提供了一个调用编译器和链接器的简单方法,这样在编译程序

       çš„时候你就不用去记住那么多的命令行参数了。

       ä½ å¯ä»¥ç®€å•çš„把Wedit想象成你的控制台,在这里你可以控制所有的流程。

       å¥½å§ï¼çŽ°åœ¨ä½ å¯ä»¥ç”¨ä½ çš„鼠标点一下Windows的“开始”按钮,在程序项的子菜单了

       å¯»æ‰¾â€œlcc-win”,好了吗?现在你已经准备好在Lcc-Win中写你的第一个程序了。

       å†™ä¸ªå°ç¨‹åºï¼

       ä½ çŸ¥é“吗?自从第一个C编译器产生以来(也许可能更早一些),有一个惯例就是

       ä¸ºè¿™ä¸ªç¼–译器写的第一个程序是“Hello World”,我为我拥有的所有编译器都写过,

       çŽ°åœ¨æˆ‘们就来写一个。

       ç¬¬ä¸€æ­¥æ˜¯åˆ›å»ºæºç æ–‡ä»¶ã€‚在“File”菜单中选择“new”项,然后在出现的对话框

       ä¸­è¾“入“hello.c”并点一下“OK”。

       çŽ°åœ¨ä½ çœ‹åˆ°çš„是一个标题为“hello.c”的空白窗口,输入下面的代码:

       #include <stdio.h>

       void main (void)

       {

       printf (Hello World from LCC-Win!\n);

       }

       ä¿å­˜æˆ‘们的小程序,在“File”菜单中选择“Save”项。

       çŽ°åœ¨æˆ‘们可以编译这个程序了。选择“Compiler”菜单中的“Compile hello.c”

       è°ƒç”¨ç¼–译器。这时一个新窗口会出现在IDE的底部,这是信息窗口,当编译器处理完成,

       åœ¨è¿™ä¸ªçª—口中将会显示“HELLO.exe build successfully.”,如果编译出错,出错信

       æ¯ä¹Ÿå°†ä¼šè¢«æ˜¾ç¤ºåœ¨è¿™é‡Œã€‚

       å¦‚果编译出错了,在信息窗口处双击信息显示所在行,在编辑窗口内将高亮度显示

       å‡ºé”™ä»£ç è¡Œï¼Œä»”细的检查一下你写的程序和上面我写的一样,这里需要注意的是C语言

       æ˜¯å¤§å°å†™æ•æ„Ÿçš„程序语言,这意味着“printf”和“Printf”对编译器是不相同。

       çŽ°åœ¨ä½ å·²ç»ç¼–译好了这个程序,按[Ctrl]+[F5]键运行一下,结果对吗?

       ä½¿ç”¨å·¥ç¨‹ç®¡ç†

       çŽ°åœ¨ä½ å·²ç»ç¼–译了你的第一个程序,你可能想知道——执行文件在哪里?

       å›žç­”是:我也不知道!这可能听起来很傻(的确也是),但是这是看你在编译程序

       æ—¶çš„缺省目录是什么,所以你应该在你的硬盘里搜索一个叫做“hello.exe”的文件。

       ä½ è‚¯å®šä¸ä¼šæƒ³è¦æ¯å¼€å‘一个程序都要搜索一下硬盘的,这种情况下你就要使用工程。

       å·¥ç¨‹æ˜¯ä¸€äº›ç¼–译器要知晓的建立程序所需要的信息。这包括程序源文件、编译好的

       æ–‡ä»¶çš„存放地点、要编译为什么类型的可执行文件,一个好的想法是为每一个程序建立

       ä¸€ä¸ªå·¥ç¨‹ã€‚

       äº‹å®žä¸Šï¼Œå¯¹äºŽæˆ‘们的“HelloWorld”程序还是有一个工程的,Lcc=Win会为没有

       æŒ‡æ˜Žå·¥ç¨‹çš„程序建立一个缺省的工程。选择“Project”菜单的“Erase...”项,Wedit

       ä¼šæ˜¾ç¤ºä¸€ä¸ªå·¥ç¨‹åˆ—表,你会看到一个项目叫做“HELLO”,现在我们毫不留情的删除它。

       ä¸Žå…¶ä»–的编译器不同的是,Lcc-Win的工程信息不是存储在硬盘上的,而是存储

       åœ¨Windows的注册表项里。这使得Wedit可以“记住”所有的工程,甚至于在不同的磁盘

       ä¸Šã€‚但是优势我们也需要清除我们不再使用的工程,在这种情况下,我们可以把工程信

       æ¯å¯¼å‡ºåˆ°ç£ç›˜ä¸Šï¼Œç„¶åŽåœ¨IDE中删除它。看一下“Project”菜单的选项,你就会明白了。

       çŽ°åœ¨ä½ å¯ä»¥è¯•ç€åˆ›å»ºä¸€ä¸ªâ€œHELLO”工程。

       ç¬¬ä¸€ä¸ªWindows程序

       ä½ å¯èƒ½å·²ç»æ³¨æ„åˆ°äº†hello.exe看起来象是一个DOS程序,但是它不是的,它是一个

       çœŸæ­£Windows程序,但是这种类型的程序被称为Windows控制台程序,就是在文本模式下

       è¿è¡Œçš„Windows程序。如果你不相信,可以试着在Windows的纯DOS环境下运行一下,你

       ä¼šå¾—到一行信息:“This program cannot be run in DOS mode”。

       å†™ä¸€ä¸ªçœŸæ­£çš„Windows版的“HelloWorld”程序并不比控制台的版本难多少。首先

       åˆ›å»ºä¸€ä¸ªæ–°å·¥ç¨‹ï¼Œé€‰æ‹©â€œWindows executable”代替“Console application”,点OK

       åŽï¼ŒLcc-Win会问你需要Wizard(生成向导)创建程序框架吗,回答No。

       #include <windows.h>

       int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

       {

       MessageBox (NULL, Hello world from Lcc-Win!, Hello, MB_OK);

       return 0;

       }

       ç¼–译并运行这个程序,你会看到一个显示hello信息的窗口,点ok关闭退出。

       ä¸å¹¸çš„是,除了这样的小之又小的Windows程序,一般情况下Windows程序是很复杂

       çš„,现在你已经知道了如何创建工程和编译程序,如果你是一个Windows编程新手,去

       æ‰¾ä¸€äº›æœ‰å…³çš„书来看看,取得必要的基础,一些Windows编程知识在下面的部分是必须

       çš„。

       å¦‚果你是一个C语言的新手,那么先好好的学一段时间再来看这个指南吧!

       ç¨‹åºç”Ÿæˆå‘导

       Windows程序与文本状态下的程序比起来要好的多,但是天上不会掉馅饼的,你想

       è¦å¾—到的Windows功能支持,比如:剪裁板、多任务等等要付出的是大量的复杂的代码。

       ä½†æ˜¯æ€»è¿˜æ˜¯æœ‰äº›åŠžæ³•å¯ä»¥ä½¿äº‹æƒ…变得简单一些的。长时间以来,程序员们发现实际

       ä¸Šæ€»æ˜¯æœ‰äº›åœ¨æ¯ä¸ªç¨‹åºä¸­éƒ½ç›¸åŒçš„代码段,所以Windows程序员通常使用模板来生成这

       éƒ¨åˆ†ä»£ç ã€‚就是说源文件一般只要生成一次,就可以在任何一个新程序中使用了。只有

       å˜åŒ–的部分才是每个程序不同的部分,显然这些应该是可以自动的进行的。

       è¿™å°±æ˜¯ç”Ÿæˆå‘导要完成的工作。你可以在它的帮助下快速的生成应用程序的框架。

       è¿™ä¸ªæ¡†æž¶äº‹å®žä¸Šå°±æ˜¯ä¸€ä¸ªä»€ä¹ˆåŠŸèƒ½ä¹Ÿæ²¡æœ‰çš„一个完整的程序,也许可能只是用来显示一

       ä¸ªç©ºçª—体,因为使程序完成具体的功能是你的工作。

       è®©æˆ‘们看一下使用向导建立最简单的应用程序的处理。

       é€šå¸¸ï¼Œç¬¬ä¸€æ­¥æ˜¯åˆ›å»ºç¨‹åºä»£ç ï¼Œç„¶åŽå»ºç«‹ä¸€ä¸ªå·¥ç¨‹ã€‚在使用向导的模式下,你并不

       éœ€è¦å†™ä¸€è¡Œä»£ç ï¼Œå‘导将为你建立它,我们直接来看建立工程各个步骤。

       åœ¨â€œProject”菜单下选择“create”项,给出项目名称和路径,选择工程类型为

       â€œWindows executable”,当Wedit询问你是否要使用向导(wizard),回答“yes”,

       è¿™æ ·å°±è¿›å…¥äº†å‘导模式。

       å‘导将显示一个对话框叫做:“Application characteristics”,这是向导将在

       åº”用程序中包含的基本特点,你可以选择以下情况的一种:单窗口、多窗口和DLL(动

       æ€é“¾æŽ¥åº“),现在我们要创建一个十分简单的单窗口小应用程序,选择单窗口类型并确

       ä¿æ‰€æœ‰çš„特性复选按纽都未被选中,点击“OK”进行处理。

       çŽ°åœ¨å‘导将要提示你输入信息设置主窗口的“类”,这里所说的“类”和C++中的

       ç±»æ˜¯ä¸åŒçš„,它是Windows在内存中存储的一个结构,用来存储正确显示窗口所需要的

       ä¿¡æ¯ã€‚最重要的是“回叫函数”(下面将具体介绍)的名称,现在只要简单接受默认的

       å±žæ€§å€¼ï¼Œç‚¹å‡»â€œNEXT”进行处理。

       è¿™ä¸ªâ€œGenerate code for the main window creation”对话框用来设定相应窗口

       çš„信息。当主窗体被创建的时候这些信息会被传送到相应的窗口。在这里你可以改变窗

       å£çš„标题栏的显示内容,然后点击“Finish”。

       å‘导的工作就要完成了,接下来的工程创建工作是通常的一些对编译器、链接器、

       è°ƒè¯•å™¨çš„一些设置,这里只要简单的接受缺省的选项就可以了。

       ç»è¿‡ä¸Šé¢çš„步骤,就完成了向导的所有的工作,你可以在IDE中看到两个窗口,一

       ä¸ªæ˜¯æºç¨‹åºç¼–辑窗,另外的一个是用来定义应用程序的主菜单的脚本。

       æ­£è±¡åˆšåˆšæ‰€è¯´çš„那样,这个程序框架是全功能的,可以通过编译并运行,你可以看

       åˆ°ä¸€ä¸ªæœ‰èœå•çš„窗口。唯一可以进行的操作是“File”菜单的“Exit”项,你可以使用

       è¿™ä¸ªèœå•é¡¹å…³é—­è¿™ä¸ªç®€å•çš„窗口,也可以使用[Ctrl]+[Q]完成同样的操作。

       çŽ°åœ¨ä½ å¯ä»¥çœ‹ä¸€ä¸‹è¿™ä¸ªç¨‹åºçš„源代码,你会注意到这个程序比那个“Hello World!”

       ç¨‹åºå¤æ‚了许多,我可以告诉你一个小窍门——从源代码的结尾开始读起,因为通常那

       é‡Œæ‰æ˜¯ä¸€äº›åŠŸèƒ½å‡½æ•°çš„所在。

       ä½¿ç”¨WeditRes创建资源

       åœ¨Windows程序的开发中,资源是十分重要的部分,菜单、对话框和其它的一些用

       æˆ·æŽ¥å£éƒ¨åˆ†éƒ½æ˜¯å¯ä»¥è±¡å†™ç¨‹åºä¸€æ ·çš„编写的,可以简单的作为资源包含进程序中。

       å¦‚æžœLcc-Win没有提供一个资源编辑器那么Lcc-Win将不是一个完整的Win编

       è¯‘程序,Lcc-Win提供的资源编辑器叫做WeditRes,是在“lcc\bin\”路径下。

       çš„确,WeditRes还是在不断的完善的过程中,也就是说还没有开发完成。不过它已

       ç»å¯ä»¥ç¼–辑一些手工编辑难以完成的资源了,比如:菜单和对话框等等。在IDE下调用

       WeditRes,在“Compiler”菜单下选择“Resources”项。

       å¦‚果你正在开发的程序是用向导生成的,那么向导会产生一个资源文件,在这个文

       ä»¶é‡Œè‡³å°‘包括菜单资源,WeditRes会打开这个资源文件,但是它不会找到相应的头文件,

       ä½ åº”该为它指明头文件的路径。通常是在WeditRes当前工作路径的上一级目录。

       WeditRes要找的文件通常叫做prjnamewiz.h,这里的prjname是你指定

       çš„工程的名称。经过这一步就可以修改工程所用的资源了。

       å¦‚果你的程序不是由向导生成的,那么WeditRes会提示你输入资源文件的文件名,输

       å…¥ä¸€ä¸ªåç§°åŽç‚¹å‡»â€œOK”,这时WeditRes会说不能打开这个资源文件,没有关系,这是

       å› ä¸ºè¿™ä¸ªç›®å½•ä¸‹çš„确是没有资源文件的,还是在这个对话框中点击“OK”,然后在

       â€œFile”菜单中选择“New”项,这样就会为你的工程创建一个新的资源工程,键入一

       ä¸ªå·¥ç¨‹åï¼Œä¸€èˆ¬æƒ…况是和应用程序的工程名相同,然后点击“Validate”,现在你需要

       æ‰‹å·¥åœ¨åº”用程序工程列表里添加这个资源文件(一般以“RES”为扩展名)。

       åœ¨è¿™é‡Œè¯•ä¸¾ä¸€ä¾‹â€”—我们来为我们上面创建的程序创建一个“关于”对话框资源。

       è¿è¡ŒWeditRes,输入头文件的路径后选择“Objects”菜单的“New dialog”项,

       è¿™æ—¶WeditRes会显示一个对话框,标题栏为“Dialog box parameters”,改变对话框

       çš„标题为“About this application”或者随便其它的什么东西,然后在“Identity”

       ï¼ˆæ ‡è¯†ç¬¦ï¼‰é¡¹é”®å…¥ä¸€ä¸ªä½ å–œæ¬¢çš„东西,比如:“DLG_ABOUT”,在“standard buttons”

       é€‰å•ä¸­é€‰æ‹©â€œValidate”选项并点击“OK”关闭对话框。

       ä½ åœ¨è¿™ä¸ªæ—¶å€™åº”该可以看到一个新的对话框和一个浮动的工具条,在对话框中也应

       è¯¥æœ‰ä¸€ä¸ªæŒ‰çº½ï¼Œä½ å¯ä»¥ç”¨é¼ æ ‡æ‹–动它来重新指定它的位置,如果你还想改变按纽上显示

       çš„文字——双击它打开属性对话框,或者先选定它,然后在浮动工具条下改变显示文字。

       ä¸‹é¢æˆ‘们添加一个静态文本标签,在工具条上选择文本工具,光标形状变成由一个

       çŸ©å½¢åŒ…围的指针,在对话框的窗体上点击一下,一个包含文本——“Text”——的矩形

       ä¼šå‡ºçŽ°åœ¨ä½ ç‚¹å‡»çš„地方,可以通过鼠标拖动来改变这个文本框的大小,同样也可以改变

       æ˜¾ç¤ºçš„文本和文本框的位置。

       æˆ‘们还可以在这个对话框中添加其它的装置。空心方框、实心方框和组件盒等可以

       å¯¹è¿™ä¸ªå¯¹è¯æ¡†è¿›è¡Œä¸€äº›ç®€å•çš„装饰。如果你想要删除一个装置,选定它然后按

       [Ctrl] + [X],或者选择“Edit”菜单的“Cut”项。还可以选择“Options”菜单的

       â€œTest”项测试这个对话框的外观。在工具栏里有一个按纽的功能是相同的,就是看起

       æ¥è±¡ä¸€ä¸ªå¼€å…³çš„那个,如果想要继续编辑这个对话框,只要再次选择上述选项一次即可。

       ç¼–辑完成后在“File”菜单中选择存盘,然后关闭WeditRes,为了显示这个对话框

       ä¸‹é¢æˆ‘们必须在程序中包含相应的代码。

       å¯»æ‰¾â€œOnCommand”语句,在那里肯定有一个switch语句的条件之一是菜单命令

       â€œExit”的(IDM_EXIT),现在我们为我们的新对话框添加一个新的case条件,输入如

       ä¸‹ä»£ç ï¼š

       case IDM_ABOUT:

       DialogBox (hInst, MAKEINTRESOURCE(DGL_ABOUT), hwnd, AboutDlgProc);

       break;

       æˆ‘们还需要编写对话框函数。

       BOOL CALLBACK AboutDlgProc (HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)

       {

       switch (msg)

       {

       case WM_COMMAND:

       if (LOWORD(wParam) == IDOK)

       {

       EndDialog(hwnd,0);

       return TRUE;

       }

       break;

       }

       return FALSE;

       }

       ä½ åº”该已经明白了,由向导来生成代码要简单得多!现在编译、链接这个程序,然

       åŽè¿è¡Œå®ƒï¼Œé€‰æ‹©â€œCompiler”中的“Execute prj.exe”项,我们创建的对话框将显示

       åœ¨å±å¹•ä¸Šäº†ã€‚

       æ·»åŠ å…¶å®ƒç±»åž‹çš„资源

       ä½ è¿˜éœ€è¦çŸ¥é“如何添加其它资源,如图标等。

       äº‹å®žä¸ŠWeditRes还不能编辑图标文件,作者说正在做这方面的工作。所以你可能要

       ä½¿ç”¨å…¶å®ƒçš„工具来完成图标编辑的工作。

       åœ¨èµ„源创建完后,你要把它添加到工程的资源描述文件里面去。如果你是使用向导

       åˆ›å»ºçš„工程。你只须要打开与工程名相同的*.RC文件就可以了。

       å¦‚果你没有使用向导,那么你只能新创建一个RC文件。如果你是使用WeditRes创建

       çš„资源,在建立资源描述文件时有些事情是你必须知道的——必须包含WeditRes资源,

       ç”šè‡³äºŽä½ å¹¶æ²¡æœ‰ä½¿ç”¨ä»»ä½•ç”±WeditRes创建的资源,你完全有可能在后续的工作中用到,

       æˆ‘建议无论什么情况都应该象下面这样做。

       WeditRes一般要建立三个文件:一个*.DLG文件、一个*.H头文件和一个*.RES二进

       åˆ¶èµ„源文件。DLG文件描述了由WeditRes创建的资源的定义(如:资源串、菜单和对话

       æ¡†ç­‰ï¼‰ï¼ŒH文件是所有资源的符号名的定义,RES文件是编译后的二进制资源文件,这个

       æ–‡ä»¶å°†è¢«é“¾æŽ¥åˆ°å·¥ç¨‹æœ€åŽç”Ÿæˆçš„可执行程序中。

       èµ„源描述文件(*.RC)的文件名一定要和RES文件的文件名相同,当Lcc-Win的资

       æºç¼–译器(lrc.exe)编译资源时将覆盖原来的RES文件。你可以在Wedit中创建资源描

       è¿°æ–‡ä»¶ï¼Œå¦‚下:

       #include <windows.h>

       #include resources.h

       #include resources.dlg

       æ¯ã€‚

       ç¬¬äºŒè¡ŒåŒ…含由WeditRes产生的资源的符号名的头文件,我在这里假定你的资源工程

       åä¸ºâ€œresurces”,可以改为你所定义的名称。第三行是WeditRes产生的资源描述文件,

       è¿™æ ·ä¸ä¼šä¸¢å¤±ä½ å·²ç»åˆ›å»ºäº†çš„资源。

       ä¸‹é¢ä½ å¯ä»¥å‘资源描述文件中增加资源,下面是一个例子:

       IDI_MYICON ICON myiconfile.ico

       è¿™ä¸€è¡Œå®šä¹‰äº†å›¾æ ‡èµ„源,在使用前,一定要定义图标的符号名。比如在“prjwiz.h”

       æ–‡ä»¶ï¼ˆæˆ–者“resource.h”,如果你没有使用向导)中,如果你没有定义这个符号名,

       é‚£ä¹ˆç¼–译器将认为它是一个字符串名。

       æ·»åŠ å…‰æ ‡æˆ–者位图资源的步骤是相同的,只要把关键字改为“BITMAP”或者

       â€œCURSOR”。

       ä¸‹é¢è¦åšçš„是把资源描述文件包含在工程文件列表中,当下一次你编译工程,资源

       ç¼–译器也将编译这个资源描述文件,并把产生的二进制资源链接到执行文件内。

       è¿™æ ·ä½ å¯ä»¥æ·»åŠ å›¾æ ‡ã€å…‰æ ‡å’Œä½å›¾èµ„源,对于其它类型的资源可以使用RCDATA资源

       æ–¹å¼æ·»åŠ åˆ°èµ„源文件内,就是一系列的由逗号分隔的数值信息,这种方式可以使Lcc-Win

       çš„资源编译器不支持的资源得以添加到资源文件中去,比如WAV文件等。

       ä½¿ç”¨éžè§„格资源

       Lcc-win的资源编译器可以使用各种类型的资源,如对话框、菜单、图标等,但

       æ˜¯å®ƒä¸èƒ½ä½¿ç”¨å…¶å®ƒéžè§„格的资源如多媒体文件(WAV,MID等等)。

       ä½ å¯èƒ½è®¤ä¸ºä½¿ç”¨å…¶å®ƒçš„资源编译器如微软在Win SDK中提供的资源编译器,或者

       å…¶å®ƒçš„什么东西。

       ä½†æ˜¯è¿™é‡Œçš„麻烦事是LCCLINK,因为它并不认识这些资源,因此也不可能把这些资

       æºé“¾æŽ¥åˆ°ä½ çš„执行文件中去,这和真是个大问题,你可能不得不使用其它的链接器,这

       æ„å‘³ç€å¯èƒ½éœ€è¦å…¶å®ƒç±»æ€§çš„入口库。

       æˆ‘认为这样做不是一个好的解决方案,主要的原因是Wedit不是设计成可以使用其

       å®ƒçš„链接器的,你将不得不在命令行下编译你的程序,放弃了Lcc-Win IDE提供的全

       éƒ¨ä¼˜ç‚¹ã€‚

       ä½†æ˜¯è¿™é‡Œè¿˜æ˜¯æœ‰ä¸€ä¸ªå¯ä¾›é€‰æ‹©çš„方案,——幸运的是LRC支持RCDATA资源类型,这

       ç§èµ„源类型用来包含二进制数据类型的资源,使用一系列的数字列表表示。

       ä¸‹é¢æ˜¯å…·ä½“的实现方法:

       é¦–先你需要转换你要使用的二进制文件到有一系列的有逗号分割数值表示的文本文

       ä»¶ï¼ŒLRC缺省的认为这些数据是位长的,它同时也支持位长度的整数,只要在数值

       åŽæ·»åŠ â€œL”字符就可以了。

       ä½ å¯ä»¥ä»Žè¿™é‡Œä¸‹æ ½åšè¿™äº›å·¥ä½œçš„转换器:

       * Bin2Txt: 开发者:Josef Planeta. 十分的灵活方便;

       * TextIt: 本文作者开发,可以一次转换多个文件。

       è¿™ä¸¤ä¸ªå·¥å…·éƒ½å¸¦æœ‰æºç ï¼Œä½¿ç”¨Lcc-Win开发。

       ç„¶åŽä¸€å®šè¦åœ¨èµ„源数据中包含这些整数列表,如果你的资源文件没有使用资源描述

       æ–‡ä»¶ï¼Œå¦‚果你没有使用向导生成工程,这是有很大可能的。你一定要建立一个资源描述

       æ–‡ä»¶ï¼Œä¸€èˆ¬æ˜¯è¿™ä¸ªæ ·å­çš„:

       #include <windows.h> //basic Windows header file

       #include resources.h //resource identifiers (generated by WeditRes)

       #include resources.dlg //resource scripts (generated by WeditRes)

       MySound RCDATA

       BEGIN

       #include mysound.txt

       END

       åœ¨è¿™ä¸ªä¾‹å­ä¸­ï¼Œæˆ‘们包含了一个叫做“mysound.txt”的文件,这个文件是由一个

       WAV文件转换成的数据文件。

       è¦æ³¨æ„å½“前版本的LRC(V)在RCDATA资源的大小上是有限制的,如果任何一

       ä¸ªæ•°æ®æ–‡ä»¶å¤§äºŽKb,你有可能得到一个溢出信息(Overflow in resource data),

       åœ¨æœªæ¥çš„版本中可能会有所改进,但是在目前如果出现了这种情况可能只有使用其它的

       èµ„源编译器了。

       ä½¿ç”¨RCDATA类型定义资源意味着你不能直接的指定PlaySound来播放这些资源,因

       ä¸ºç±»åž‹æ˜¯ä¸åŒçš„。

       è§£å†³åŠžæ³•æ˜¯æ‰‹å·¥æŠŠè¿™äº›æ•°æ®è¯»å…¥å†…存,下面的代码说明了在PlaySound时要做的事情:

       BOOL PlayRcSound (HINSTANCE hInst, LPCTSTR lpszSndName)

       {

       HRSRC hr;

       HGLOBAL hg;

       LPVOID lpSndData;

       hr = FindResource (hInst, lpszSndName, RT_RCDATA);

       if (hr != NULL)

       {

       hg = LoadResource (hInst, hr);

       if (hg != NULL)

       {

       lpSndData = LockResource (hg);

       if (lpSndData != NULL)

       {

       return PlaySound((LPCTSTR)lpSndData, NULL, SND_MEMORY);

       /* We do not need to unlock or unload the resource, */

       /* Windows will take care of this */

       }

       }

       }

       return FALSE;

       }

       å¦‚果你的资源在头文件中定义有标识符,叫做:ID_MYSOUND,那么调用函数的方式

       åº”该是:

       PlayRcSound (hInst, MAKEINTRESOURCE(ID_MYSOUND));

       å¦å¤–,如果你给出了一个字符串名,比如:MySound,函数调用如下所示:

       PlayRcSound (hInst, MySound);

       é™æ€åº“和动态库

       ä¹Ÿè®¸ç¨‹åºå‘˜å°±æ˜¯å–œæ¬¢æ¯”喻以类的修辞的,库的概念就是一个例子,它是用来存储可

       èƒ½åœ¨è®¸å¤šçš„程序中使用的代码,或者一部分十分专业的代码,只要写一次就可以了,甚

       è‡³æ˜¯ç”±å…¶ä»–的人为你写的代码,这样使用这些代码而完全不用关心具体的实现细节。

       å’Œå…¶å®ƒçš„Windows编译器一样,LCC-Win也支持两种库——动态库和静态库。

       é™æ€åº“包含的代码在编译链接时将被添加在可执行文件中,它被称为“静态”库是

       å› ä¸ºä¸€æ—¦å®ƒé“¾æŽ¥åˆ°å¯æ‰§è¡Œæ–‡ä»¶ä¸­ï¼Œå°±å°†ä¸å¯æ”¹å˜ï¼ˆé™¤éžé‡æ–°ç¼–译整个程序)。

       è€ŒåŠ¨æ€é“¾æŽ¥åº“不会由编译器链接到可执行文件中,而是在运行时由操作系统链接的,

       è¿™æ ·å³ä½¿ä½ æ”¹å˜äº†è¿™ä¸ªåº“,也不会使整个可执行程序重新编译。

       é™æ€åº“的编写要简单些,只要创建一个类型为“Static library (lib)”的新工程,

       æ·»åŠ ä½ è¦åœ¨è¿™ä¸ªé™æ€åº“中使用的原始资料——函数、数据等等,编译后就会得到一个

       LIB文件,这个文件里面包括了所有你指定的函数和数据。如果你要使用这些函数或者

       æ•°æ®ï¼Œåœ¨â€œConfiguration”对话框中的“Linker”表里的“Additional libraries”

       é¡¹ä¸­æŒ‡å®šé™æ€åº“名称,通知编译器把这个静态库链接到工程里去,但是千万不要忘了把

       ä½ çš„静态库放到链接器能够找到的地方,比如:“\lcc\lib”路径下。

       åŠ¨æ€é“¾æŽ¥åº“就有些麻烦了,你要使用两个文件而不是一个文件:动态库本身——DLL

       æ–‡ä»¶å’Œå…³è”入口库——LIB文件。入口库是给链接器使用的,简单的说它使用来哄骗

       é“¾æŽ¥å™¨çš„,同时它也包含了使Windows正确的调用相应动态库中的函数的信息。

       è€Œä¸”,动态库的功能可以更加的强大,它有一个LibMain()函数,在程序每一次

       è°ƒç”¨å®ƒæ—¶éƒ½è¦é€šè¿‡å®ƒæ¥è¿›è¡Œåˆå§‹åŒ–的工作。

       è¦åˆ›å»ºä¸€ä¸ªåŠ¨æ€é“¾æŽ¥åº“,你要创建一个DLL工程,然后你可以使用向导生成LibMain()

       å‡½æ•°ã€‚添加你要使用的函数和数据,在编译这个工程后,你就可以得到DLL库和接口库

       æ–‡ä»¶ã€‚

       å¦‚果要使用动态链接库,象使用静态库一样,要将接口库放在“\lcc\lib”路径下,

       åœ¨â€œOptions”对话框中添加这个接口库。同时也要把DLL文件放置在Windows能够搜索

       åˆ°çš„路径下,Windows搜索动态链接库的缺省目录是“\windows\system\”和应用程序

       çš„起始目录,将动态链接库放置在这两个目录下都是可以的

Scintilla功能

       Scintilla是一个功能强大的源代码编辑控件,它能够实现文本编辑控件中的辑器所有基本功能,并提供一些特殊功能,源码例如语法高亮显示、文编错误指示、辑器代码自动完成、源码创建订单源码笔记代码提示、文编在左侧空白处显示断点和当前运行行等。辑器它的源码界面自定义风格功能比大多数编辑器控件更开放,用户可以根据需要自定义不同类型的文编字体、粗体、辑器斜体、源码前景色和背景色,文编并支持大量字体。辑器例如,源码在设置C/C++编辑模式后,可以定义注释语句类型的颜色、字体、大小,同样可以自定义关键字类型的颜色、字体、vsftpd源码包大小等。

       Scintilla在.NET和Java虚拟机中的表现将得到加强,显示出其活力和开发团队的热情。与之相比,Richedit控件在样式改变时将其视为文档改变,这不符合源代码编辑的需求。选择Scintilla作为源代码编辑控件,可以避免大量自定义代码的编写,实现高效、安全、打印 源码 彩色可靠的源代码编辑。

       Scintilla提供了Win和Linux版本,Linux版使用GTK+,在Windows 、nt4.0、Windows 、Windows XP和Red Hat Linux 8、9等系统中,GTK+1.2和2.0版本中测试运行正常。Scintilla的thrift源码下载Windows版本是一个窗体控件,其主要编程接口通过窗体消息传递,实现功能只需向控件发送消息即可。不过,在MFC编程中,通过消息控制控件较为繁琐,通常将自定义消息封装到窗体类中,以便更方便地调用。

       除了基本的编辑功能,Scintilla还提供语法高亮、代码折叠、乱序壳源码书签、自动完成和语句提示等功能,用户无需学习CEDIT或RichEdit,Scintilla提供了一致的API接口。此外,Scintilla开发组还基于此控件开发了一个编辑软件SciTE,它完全实现了Scintilla的所有功能。下载并使用SciTE可以直观了解Scintilla的功能,同时SciTE也是开源软件,学习其代码可以深入了解Scintilla的使用方法。

WinASM studio实例图文教程

       WinASM studio在中国发布第一款简体中文正式版软件,这才真正是一款在我所使用的位汇编平台中最为优秀的WIN汇编编辑器,支持MASM、TASM、NASM等多种汇编编译器,Windows界面,支持语法高亮,智能语法提示比RadASM完美很多,自带一个资源编辑器。拥有较强的工程管理功能,加之众多插件的支持,使得它用汇编语言编写Windows软件变得得心应手。

   WinASM studio实例教程

       下载完成后请放逻辑盘的根目录下解压,注意一定要在根目录下,如果不在根目录下, 会造成关键字无法高亮,以及程序无法编译.

       第一步 我们先来看WinAsm Studio的界面

       第二步 我们新建一个工程

       文件-新建工程

       出现如下所示对话框

       点击标准可执行文件 工程浏览器上就会多出一个工程, 这时默认的名称是Untitleed1.asm

       我们再在工程浏览器窗口 点击右键 添加一个新的资源文件

       由于我配置winasm的时候 在程序目录下指定了一个工程目录

       所以他默认的工程文件会保存到 该目录下

       接下来 按下保存工程按钮

       在改目录下新建一个文件夹(方便管理的建议. 也可以直接保存.)

       把相关文件保存到该文件夹下. Winasm会建立三个文件. 一个是工程文件(makefile 和工程配置的一些属性), 一个是汇编源程序, 一个是资源文件.

       好了 工程我们已经建好了.

       第三步 进行资源的编辑

       先是工程浏览器上单击资源文件. 视图会切换到资源编辑器

       这时界面上是一片空白.我们把工程浏览器的选项卡切换到资源选项卡.

       我们先把工程所需的位图资源等拷贝到工程目录下.

       单击资源按钮添加

       加上咋们需要的id和名称. 确定!

       工程需要的资源我们加载完了. 接下来我们就要画界面了!

       单击添加新对话框 添加一个对话框窗口

       画好我们要的对话框 并在属性窗口置好相应的属性.

       按SHIFT+F4 编译资源.

       如果有报错. 多数是因为你资源代码编辑的不对.

       这时我们可以切换到代码模式 编辑资源代码

       Winasm 会告诉你 是哪行出错了!

       现在这demo中,是找不到该ico图标 .

       如果你不想包含该图标文件,直接把这两行代码去掉就好了.

       (偶平时都这么做的哈哈~~~~ 偶懒吧!)

       资源编译通过以后 选择资源菜单-定义

       导出在资源文件中定义的控件id

       拷贝完后 切换回汇编代码编辑器

       黏贴到汇编代码中

       代码编写完后. SHTF+F8 编译 并运行.

       如果没有错误 程序就会执行了.

       ;==========================================================

       好了 winasm studio的基础使用教程就这么多.

   WinASM studio快捷键

       F2 (选中代码后F2)代码注释

       SHIFT+F2 (选中代码后) 撤销注释

       SHIFT+F8 编译程序并运行

       CTRL+F9 程序在调试器中运行

       /*注意:请在下载整合包后自行查毒, 我上传的保证是无毒的. 希望不要有心里变态的人在winasm studio整合包里放鸽子..安全起见 还是杀下毒. 如果不放心 那请给我留言.我再找个地方上传!*/

       第一个中文版软件,功能和性能以及易用性绝对超越RadASM任何一个版本!绝对!

Windows系统中vscode的c/c++开发环境配置(一):下载和安装

       在Windows系统中,Visual Studio Code(vscode)作为一款轻量级源代码编辑器,为C/C++开发提供了一个小而强大的跨平台环境。要开始开发,首先需要下载和安装vscode及其对应的GCC编译器MinGW-w。本文主要介绍了如何下载不同版本的MinGW-w,以及如何配置其环境变量以确保系统能找到编译器。

       下载vscode,访问官网Visual Studio Code - Code Editing. Redefined,根据你的平台选择安装包。对于C/C++开发,还需安装MinGW-w,选择合适的版本(比如带seh的win版本,适合Windows平台)。下载后,解压到不含中文的文件夹,并记录mingw/bin目录的路径。

       接着,配置环境变量:进入“环境变量”设置,添加mingw/bin路径到Path,然后通过cmd验证g++版本。路径配置成功后,系统将能够通过path找到并执行可执行文件。

       虽然基础配置已完成,但为了实现一键编译和执行C/C++代码,还需要安装相关插件和配置vscode的调试功能,这部分内容将在后续文章中详细介绍。

相关推荐
一周热点