windows程序消息驱动

                                            

windows程序分为【程序代码】和【UI资源】两大部分

【UI资源】:指功能菜单,对话框外貌,程序图标,光标形状等东西,UI资源实际内容借助各种工具生产,以各种扩展名存在,如ico,bmp,cur.程序员要在资源描述档(.rc)描述它们,RC编译器读取RC挡描述后将所有UI资源集中于程序代码结合在一起,构成一个完整的WINDOWS可执行档。

windows程序的进行依靠外部发生的事来驱动,即程序不断等待,等待任何可能的输入,然后做判断,然后做适当的处理。输入是指由操作系统捕捉到之后,以消息形式(一种数据结构)进入程序之中。

操作系统捕捉外围设备发生的事件是依靠USER模块掌管的各个外围驱动设备。

应用程序获得的各种输入大致可分为:

1.硬件装置所产生的消息(如鼠标移动或键盘被按下)放在系统队列中

2.Windows系统或其他Windows程序传送过来的消息,放在程序队列。

应用程序调用GetmessageAPI取得消息队列的消息。所有的GUI系统都是以消息为基础的事件驱动系统。

也就是说每个windows程序都应该有一个回路如下:

MSG msg;
while (GetMessage(&msg, NULL, NULL, NULL)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
typedef struct tagMSG {
     HWND hwnd;
     UINT message;
     WPARAM wParam;
     LPARAM lParam;
     DWORD time;
     POINT pt;
} MSG;

MSG结构是Windos内定的一种资料格式。

接受并处理消息的主角是窗口,每个窗口都应该有一个函数负责处理消息,程序员必须负责设计这个窗口函数(windows function)

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

至于窗口的产生,显示等工作,都有专门的API函数负责。

                                      

猜你喜欢

转载自www.cnblogs.com/liu6666/p/12593951.html