Win32程序开发流程

 
Windows程序分为“程序代码”和”UI资源”两大部分,两部分最后

以RC编译器整合为一个完整的EXE档案。所谓UI资源是指功能菜单、对

话框外貌、程序图标、光标形状等等东西,实际内容借助各种工具产生

,并以各种扩展名的文件存在,如.ico、.bmp、、.cur等等。程序员必

须在一个所谓的资源描述文档(.rc)中描述它们。RC编译器读取RC文

件的描述后将所有UI资源文件集中制作出一个.RES文件,再于程序代码

结合在一起,这才是一个完整的Windows可执行文件。

--------------------------------------------------------------
需要什么函数库(.LIB)

     Windows支持动态链接,应用程序所调用的Windows API函数是在
“执行时期”才链接上的。那么,“链接时期”所需要的动态链接函数

库有哪些?做什么用?
     Windows程序调用的函数可分为C Runtimes以及Windows API两大部

分。以下是命名规则和使用时机:
     LIBC.LIB——这是C Runtime函数库的静态链接版本。
     MSVCRT.LIB——这是C Runtime函数库动态链接版本的import函数

库。如果链接这一函数库,程序执行时必须有MSVCRT40.DLL在场。
     另一组函数,Windows API,由操作系统本身(主要是Windows三大

模块GDI32.DLL和USER32.DLL和KERNEL32.DLL)提供。
     Windows发展至今,逐渐加上的一些新的API函数并不放在GDI和

USER和KERNEL三大模块中,而是放在诸如COMMDLG.DLL、TOOLHELP.DLL

之中。如果要使用这些APIs,连接时还得加上这些DLLs所对应的import

函数库,诸如COMDLG32.LIB和TH32.LIB.
-------------------------------------------------------------
需要什么头文件(.H)

     所有Windows程序都必须载入WINDOWS.H。早期较大,现已切割为各

个较小的文件,但还以WINDOWS.Hz总括之。除非十分清楚什么API操作

需要什么头文件,否则为求便利,单单一个WINDOWS.H也就是了。
     不过, WINDOWS.H 之照顾三大模块所提供的API函数,如果用到其

它system DLLs,就要载入对应的头文件,例如COMMDLG.H或MAPI.H 或

TAPI.H等等。
-------------------------------------------------------------
以消息为基础,以事件驱动之(message based, event driven)

     Windows 程序的进行系依靠外部发生的事件来驱动。换句话说,程

序不断等待(利用一个while循环),等待任何可能的输入,然后做判断

,然后再做适当的处理。上述的“输入”是由操作系统捕捉到以后,以

消息形式(一种数据结构)进入程序之中。操作系统如何捕捉外围设备(

如键盘和鼠标)所发生的事件呢? USER模块掌管着各个外围的驱动程

序,他们各有侦测循环。
     如果对应用程序获得的“输入”进行分类,可以分为由硬件装置所

产生的消息,放在系统队列(system queue)中,以及由Windows系统

或其它Windows程序传送过来的消息,放在程序队列(application

queue)中。以应用程序的眼光来看,消息就是消息,来自哪里或放在哪

里其实并没有太大区别,反正程序调用GetMessage API就取得一个消息

,程序的生命靠它来推动。
     可想而知,每一个Windows程序都应该有一个如下的循环:
     MSG msg;
while(GetMessage(&msg,NULL,NULL,NULL)){
      TranslateMessage(&msg);
      DispatchMessage(&msg);
}
//以上出现的函数都是Windows API函数
     消息,也就是上面出现的MSG结构,其实是Windows内设的一种数据

格式;
     /*Queued message structure*/
     typedef struct tagMSG
     {
         HWND     hwnd;
         UINT     message;//WM_XXX,例如WM_MOUSEMOVE,WM_SIZE...
         WPARAM   wParam;
         LPARAM   lParam;
         DWORD    time;
         POINT    pt;
     }MSG;
     接受并处理消息的主角就是窗口,每一个窗口都应该有一个函数负

责处理消息,程序员必须负责设计这个所谓的“窗口函数”。如果窗口

获得一个消息,则这个窗口函数必须判断消息的类别,决定处理方式。


以上就是Windows 程序设计最重要的的观念,至于窗口的产生与显示,

十分简单,有专门的API函数负责。稍后我们就会看到Windows程序如何

把这消息的取得、分派、处理操作表现出来。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值