Win32程序开发流程
Windows程序分为“程序代码”和“UI(User Interface用户)资源”两大部分,两部分最后以RC编译器整合为一个完整的EXE挡案。所谓UI资源是指功能菜单,对话框外貌,程序图标,光标形状等等东西。这些UI资源的实际内容(二进制代码)是借助各种工具产生,并以各种扩展名的文件存在的,如.ico,.bmp,.cur等等。程序员必须在一个所谓的资源描述文档(.rc)中描述它们。RC编译器(RC.EXE)读取RC文件的描述后将所有UI资源文件集中制作一个.RES文件,再与程序代码结合在一起,再与代码结合在一起,这才是一个完整的Windows可执行文件。
需要什么函数库(.lib)
Windows支持动态链接,即应用程序所调用的Windows API函数是在“执行期间”才链接上。那么,“联结时期”所需要的函数库有哪些?做什么用?
Windows程序调用的函数可分为C Runtimes以及Windows API两大部分。早期的C Runtimes并不支持动态链接。但VC++4.0后已经支持,并且在32位操作系统中已不再有small/medium/large等内存模式之分。以下是它们的命名规则与使用时机:
#LIBC.LIB—这是C Runtime函数库的静态链接版本。
#MSVCRT.LIB—这是C Runtime函数库动态链接版本(MSVCRT40.DLL)的import函数库。若链接这一函数库,程序必须有MSVCRT40.DLL。
另一组函数,Windows API,由操作系统本身(主要是Windows三大模块GDI32.DLL,USER32.DLL和KERNEL32.DLL)提供。虽说动态链接是在执行期才发生”链接”事实。但在链接时期,链接器仍需要先为调用者(应用程序本身)准备一些适当信息,才能够在执行时期顺利“跳”到DLL中执行。若该API所属的函数库尚未加载,系统也才因此知道要先行加载该函数库。这些适当的信息放在所谓的”import函数库”中。32位Windows的三大模块对应的import函数库分别为GDI32.LIB,USER32.LIB和KERNEL32.LIB。
Windows发展至今,逐渐加上的一些新的API函数(例如Common Dialog,ToolHelp)并不放在GDI.USER和KERNEL三大模块中,而是放在诸如COMMONDLG.DLL,TOOLOHELP.DLL之中。如果要使用这些APIs,链接时还得加上这些DLLs所对应的import函数库。诸如COMMON32.LIB和TH32.LIB.
需要什么头文件(.H)
所有Windows程序都必须载入WINDOWS.H.早期这是一个巨大的头文件,大约有5000行左右,VC++4.0已把它切割为各个较小的文件,但还以WINDOWS.H总扩之.除非十分清楚什么API小、操作需要什么头文件,否则以求便利,单单一个WINDOWS.H也就可以了.
不过,WINDOWS.H只照顾三大模块所提供的API函数,若要使用其他system DLLs,例如COMMDLG.DLL或MAP.DLL或TAPI.DLL等等,就等载入对应的头文件.