windows消息机制



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成员保存窗口过程函数的指针,此指针指向窗口过程函数,窗口过程函数是一个回调函数,在特定的事件或条件下发生,由另外一方调用,用于对该事件或条件的响应。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值