一、Win32程序开发流程:
win32程序分为程序代码和UI资源两大部分,程序代码由C编译器编译成.obj目标文件,UI资源(.rc文件)由RC编译器编译成.res文件,最后由连接器将.obj文件和.res文件以及所需的函数库连接成最终的EXE文件。
Windows程序支持动态联结,即应用程序所调用的Windows API函数是在程序运行期间才联结上的。联结时期所需要的函数库即动态链接库,.dll,.exe,.fon,.mod,.drv,.ocx都是所谓的动态链接库。
Windows程序调用的函数分为C Runtimes以及WIndows API两大部分。MSVCRT.DLL是C Runtime函数动态链接库。Windows三大模块GDI32.DLL,USER32.DLL, KERNEL32.DLL提供一部分API。
动态联结在程序执行时才联结上,但是在程序联结时期,联结器仍然需要为应用程序准备一些适当的信息,才能够在执行时期顺利跳到DLL执行。这些信息即所谓的 import函数库(以.LIB结尾的文件),32位Windows的三大模块所对应的import函数分别为GDI32.LIB,USER32.LIB,KERNEL32.LIB。
二、以消息为基础,事件驱动。
WIndows程序的进行依靠外部发生的事件来驱动,即程序不断等待(利用一个while回路),等待任何可能的输入,然后做判断,然后再做相应的处理。上述的输入是由操作系统捕捉到后,一消息的形式进入程序之中。操作系统通过USER模块捕捉外围设备所发生的事件 。消息分为两类,由硬件装置产生的消息(鼠标键盘等),存放在系统队列(system queue)中,以及由windows系统或者其他windows程序传送过来的消息,存放在程序队列(application queue)中,但应用程序并不知道传送过来的消息是哪一种(实际上,它无需知道)。
接受并处理消息的主角是窗口,没一个窗口都应该有一个函数负责处理消息,程序员必须负责设计这个所谓的窗口函数(window procedure)。
三、一个windows应用程序基本结构