1、Windows 是事件驱动的,事件驱动围绕着消息的产生于处理展开,事件驱动靠消息循环机制实现,,也可以理解为消息是一种报告关于事件发生的通知;2、MFC 是一个广为使用的编程类库,对Windows 的消息机制进行了良好的封装。3、消息(Message)指的就是Windows 操作系统发给应用程序的一个通告[5],它告诉应用程序某个特定的事件发生了(比如单击了鼠标),最终处理消息的是应用程序的窗口函数,如果程序不负责处理的话系统将会作出默认处理。4、消息是一个结构体,它包含了消息的类型标示符以及其他的一些附加信息。5、系统定义的结构体MSG用于表示消息,MSG 具有如下定义形式:typedef struct tagMSG{HWND hwnd;UINT message;WPARAM wParam;LPARAM lParam;DWord time;POINT pt;}MSG;其中:hwnd 是窗口的句柄,这个参数将决定由哪个窗口过程函数对消息进行处理;message是一个消息常量,用来表示消息的类型;wParam 和lParam 都是32位的附加信息,具体表示什么内容,要视消息的类型而定;time 是消息发送的时间;pt 是消息发送时鼠标所在的位置。6、Windows 是一消息(Message)驱动式系统,Windows 消息提供了应用程序与应用程序之间、应用程序与Windows 系统之间进行通讯的手段。应用程序要实现的功能由消息来触发,并靠对消息的响应和处理来完成。7、Windows 系统中有两种消息队列,一种是系统消息队列,另一种是应用程序消息队列。计算机的所有输入设备由Windows监控,当一个事件发生时,Windows先将输入的消息放入系统消息队列中,然后再将输入的消息拷贝到相应的应用程序队列中,应用程序中通过消息循环从它的消息队列中检索每一个消息,并在发送给相应的窗口函数中。一个事件的发生,到达处理它的窗口函数必须经历上述过程。所谓消息就是描述事件发生的信息,windows程序是事件驱动的,因为windows程序执行的顺序将取决于事件的发生顺序,具有不可预知性。8、消息循环是Windows 应用程序存在的根本,应用程序通过消息循环获取各种消息,并通过相应的窗口过程函数,对消息加以处理;正是这个消息循环使得一个应用程序能够响应外部的各种事件,所以消息循环往往是一个Windows 应用程序的核心部分。9、MFC 只是通过对Windows消息映射的进行封装。
Windows应用程序的消息处理机制总结:1)每一个Windows应用程序开始的时候,系统都会为该程序创建一个消息队列,这个消息队列用来存放该程序创建的窗口消息;2)当操作系统接收到应用程序的窗口消息,就将消息投递到该应用程序的消息队列中;3)然后,应用程序在消息循环中(while(GetMessage())通过调用GetMessage函数从消息队列中取出一条条的消息,应用程序可以对这些消息进行一些预处理,比如TranslateMessage;4)应用程序通过调用DispatchMessage,将消息回传给操作系统;5)系统利用WNDCLASS结构体的lpfnWndPRoc成员保存窗口过程函数的指针,此指针指向窗口过程函数,窗口过程函数是一个回调函数,在特定的事件或条件下发生,由另外一方调用,用于对该事件或条件的响应。
新闻热点
疑难解答