LCC-Win32介绍
LCC-
Win32原来是一个免费的WIN32编译器,包含一个很好用的IDE,用起来很爽,但是最近的版本是要付费的了(40美圆)。详情请见LCC-
Win32。它的免费版本可以在国内得到,到云风工作室看一下,你会有所收获。
简介
其实所谓的简介这个部分的内容趋向取决于作者。但是我所读过的一些指南都是由一个“简介”开始的,这部分的内容通常都是在重复读者会在下面看到的东西,但是也有的简介只是作者的一些想法。
仔细的想一下,其实这个介绍并不是一件简单的事情。首先,如果你要是开门见山的直奔主题,这是不礼貌的,而且基于web的指南也不应该有超大个的简介,不应该让读者在这个东西上浪费时间和金钱。
看来我的废话也够多的了,让我们切入正题。
这个指南是单页的,建议你等浏览器下载完毕后保存一份拷贝来离线阅读。
编译器的安装
编译器的安装简单极了,只要把您下载的文件运行一下就OK了,应该不会遇到什么问题。但是注意安装的最后要编译库文件,可能要花点时间,要视你的机器速度而定。
Lcc-Win32的一些基本概念
Lcc-
Win32编译系统是由多个文件构成的。它们的共同的任务是把文本格式的源代码编译位可以运行的二进制格式。优良个重要的文件分别是编译器()和连接器()。
编译器是用来把你编写的文本翻译成处理器可以执行的格式的程序。连接器用来转换编译器生成的二进制文件(通常叫做目标文件),并添加操作系统用来把程序调入内存并执行所需要的信息它可以把多个目标文件链接为一个单独的程可执行程序,这样就可以使你可以把一个程序的代码文档分割为几个模块,这个能力在你开发大型程序时是很重要的。
虽然这些听起来好像十分的简单,但是实际上并不是这个样子的。编辑器和链接器需要你在命令行方式下键入你要建立的程序的所有信息,这将需要你记住大量的命令行参数和各种各样的开关,这时就需要IDE——集成开发环境()来提供方便了。原来你也在这里下载
IDE的基本功能是编辑文本,你可以在这个环境里编辑程序的源代码,但是远远不止有这个功能。它还给你提供了一个调用编译器和链接器的简单方法,这样在编译程序的时候你就不用去记住那么多的命令行参数了。
你可以简单的把Wedit想象成你的控制台,在这里你可以控制所有的流程。
好吧!现在你可以用你的鼠标点一下Windows的“开始”按钮,在程序项的子菜单了寻“lcc-win32”,好了吗?现在你已经准备好在Lcc-Win32中写你的第一个程序了。
写个小程序!
你知道吗?自从第一个C编译器产生以来(也许可能更早一些),有一个惯例就是为这个编译器写的第一个程序是“Hello
World”,我为我拥有的所有编译器都写过,现在我们就来写一个。
第一步是创建源码文件。在“File”菜单中选择“new”项,然后在出现的对话框中输入“hello.c”并点一下“OK”。
现在你看到的是一个标题为“hello.c”的空白窗口,输入下面的代码:
#include <stdio.h>
void main (void)
{
printf ("Hello World from LCC-Win32!\n");
}
保存我们的小程序,在“File”菜单中选择“Save”项。
现在我们可以编译这个程序了。选择“Compiler”菜单中的“Compile
hello.c”调用编译器。这时一个新窗口会出现在IDE的底部,这是信息窗口,当编译器处理完成,在这个窗口中将会显示“ build
successfully.”,如果编译出错,出错信息也将会被显示在这里。
如果编译出错了,在信息窗口处双击信息显示所在行,在编辑窗口内将高亮度显示出错代码行,仔细的检查一下你写的程序和上面我写的一样,这里需要注意的是C语言是大小写敏感的程序语言,这意味着“
printf”和“Printf”对编译器是不相同。
现在你已经编译好了这个程序,按[Ctrl]+[F5]键运行一下,结果对吗?
使用工程管理
现在你已经编译了你的第一个程序,你可能想知道——执行文件在哪里?
回答是:我也不知道!这可能听起来很傻(的确也是),但是这是看你在编译程序时的缺省目录是什么,所以你应该在你的硬盘里搜索一个叫做“”的文件。
你肯定不会想要每开发一个程序都要搜索一下硬盘的,这种情况下你就要使用工程。
工程是一些编译器要知晓的建立程序所需要的信息。这包括程序源文件、编译好的文件的存放地点、要编译为什么类型的可执行文件,一个好的想法是为每一个程序建立一个工程。
事实上,对于我们的“HelloWorld”程序还是有一个工程的,Lcc=Win32会为没有指明工程的程序建立一个缺省的工程。选择“Project”菜单的“”项,Wedit会显示一个工程列表,你会看到一个项目叫做“HELLO”,现在我们毫不留情的删除它。
与其他的编译器不同的是,Lcc-
Win32的工程信息不是存储在硬盘上的,而是存储在Windows的注册表项里。这使得Wedit可以“记住”所有的工程,甚至于在不同的磁盘上。但是优势我们也需要清除我们不再使用的工程,在这种情况下,我们可以把工程信息导出到磁盘上,然后在IDE中删除它。看一下“Project”菜单的选项,你就会明白了。
现在你可以试着创建一个“HELLO”工程。
第一个Windows程序
你可能已经注意到了看起来象是一个DOS程序,但是它不是的,它是一个真正Win dows程序,但是这种类型的程序被称为Windows控制台程序,就是在文本模式下运行的Windo ws程序。如果你不相信,可以试着在Windows的纯DOS环境下运行一下,你会得到一行信息:“This program cannot be run in DOS mode”。
写一个真正的Windows版的“HelloWorld”程序并不比控制台的版本难多少。首先创建一个新工程,选择“Windows executable”代替“Console application”,点OK后,Lcc-Win32会问你需要Wizard(生成向导)创建程序框架吗,回答No。
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nC
mdShow)
{
MessageBox (NULL, "Hello world from Lcc-Win32!", "Hello", MB_OK);
return 0;
}
编译并运行这个程序,你会看到一个显示hello信息的窗口,点ok关闭退出。
不幸的是,除了这样的小之又小的Windows程序,一般情况下Windows程序是很复杂的,现在你已经知道了如何创建工程和编译程序,如果你是一个Windows编程新手,去一些有关的书来看看,取得必要的基础,一些Windows编程知识在下面的部分是必须的。
如果你是一个C语言的新手,那么先好好的学一段时间再来看这个指南吧!
程序生成向导
Windows程序与文本状态下的程序比起来要好的多,但是天上不会掉馅饼的,你想要得到的Windows功
能支持,比如:剪裁板、多任务等等要付出的是大量的复杂的代码。
但是总还是有些办法可以使事情变得简单一些的。长时间以来,程序员们发现实际上总是有些在每个程序中都相同的代码段,所以Windows程序员通常使用模板来生成这部分代码。就是说源文件一般只要生成一次,就可以在任何一个新程序中使用了。只有变化的部分才是每个程序不同的部分,显然这些应该是可以自动的进行的。
这就是生成向导要完成的工作。你可以在它的帮助下快速的生成应用程序的框架。这个框架事实上就是一个什么功能也没有的一个完整的程序,也许可能只是用来显示一个空窗体,因为使程序完成具体的功能是你的工作。
让我们看一下使用向导建立最简单的应用程序的处理。
通常,第一步是创建程序代码,然后建立一个工程。在使用向导的模式下,你并不需要写一行代码,向导将为你建立它,我们直接来看建立工程各个步骤。
在“Project”菜单下选择“create”项,给出项目名称和路径,选择工程类型为“Window s
executable”,当Wedit询问你是否要使用向导(wizard),回答“yes”,这样就进入了向导模式。
向导将显示一个对话框叫做:“Application
characteristics”,这是向导将在应用程序中包含的基本特点,你可以选择以下情况的一种:单窗口、多窗口和DLL(动态链接库),现在我们要创建一个十分简单的单窗口小应用程序,选择单窗口类型并确保所有的特性复选按纽都未被选中,点击“OK”进行处理。
现在向导将要提示你输入信息设置主窗口的“类”,这里所说的“类”和C++中的类是不同的,它是Windows在内存中存储的一个结构,用来存储正确显示窗口所需要的信息。最重要的是“回叫函数”(下面将具体介绍)的名称,现在只要简单接受默认的属性值,点击“N EXT”进行处理。
这个“Generate code for the main window
creation”对话框用来设定相应窗口的信息。当主窗体被创建的时候这些信息会被传送到相应的窗口。在这里你可以改变窗口的标题栏的显示内容,然后点击“Finish”。
向导的工作就要完成了,接下来的工程创建工作是通常的一些对编译器、链接器、调试器的一些设置,这里只要简单的接受缺省的选项就可以了。
经过上面的步骤,就完成了向导的所有的工作,你可以在IDE中看到两个窗口,一个是源程序编辑窗,另外的一个是用来定义应用程序的主菜单的脚本。
正象刚刚所说的那样,这个程序框架是全功能的,可以通过编译并运行,你可以看到一个有菜单的窗口。
唯一可以进行的操作是“File”菜单的“Exit”项,你可以使用这个菜单项关闭这个简单的窗口,也可以使用[Ctrl]+[Q]完成同样的操作。
现在你可以看一下这个程序的源代码,你会注意到这个程序比那个“Hello
World!”程序复杂了许多,我可以告诉你一个小窍门——
从源代码的结尾开始读起,因为通常那里才是一些功能函数的所在。
使用WeditRes创建资源
在Windows程序的开发中,资源是十分重要的部分,菜单、对话框和其它的一些用户接口部分都是可以象写程序一样的编写的,可以简单的作为资源包含进程序中。
如果Lcc-Win32没有提供一个资源编辑器那么Lcc-
Win32将不是一个完整的Win32编译程序,Lcc-
Win32提供的资源编辑器叫做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;
我们还需要编写对话框函数。