1.基于事件驱动,包装成消息,放到消息队列中。
2.应用程序要硬件做事,就调用操作系统的API(功能函数)。
3.操作系统将感知到的事件交给应用程序处理,处理过程就是消息响应。
4.操作系统怎样将感知到的事件传递给应用程序?----消息机制(Message)实现。
5.操作系统将每一个事件包装成一个结构体MSG(消息)来传递给应用程序。
功能函数;
typedef struct tagMSN{
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
}MSG;
Tip:
用户对电脑输入设备进行动作产生事件;
操作系统感知事件,并按预先对这个事件定义好的结构体MSG(消息)样式进行包装,再传递给应用程序;
应用程序对接收到的的结构体MSG(消息)进行处理,调用操作系统的API,让操作系统驱动电脑进行工作;
操作系统通过结构体MSG和用户交互
句柄
句柄就是资源的标识
窗口,图标,
宏
WM(Windows Message)开头
从变量和变量的类型来区分变量的用途
消息队列
每一个应用程序,操作系统都会给它建立一个消息队列;
消息队列是先进行出的缓冲区,它是某种变量类型的数组,消息队列数组中的每一个元素都是一条消息,
操作系统将生成的每一个消息按先后顺序放进消息队列里;
应用程序总是取走第一条消息,消息队列中的消息依次前移;
应用程序取得消息后就知道用户的操作和程序的变化;
应用程序就对取得的消息进行处理,即消息响应,这是通过编码实现的,即windows程序
主要的代码区,用户就针对收到的消息编写特定的代码进行消息响应;
在用户编写代码的过程中,又会调用其它Windows API;
Tip:
操作系统通过消息机制将事件放在消息队列中,等待应用程序来取;
应用程序取得事件进行处理(消息响应),这个处理过程就需要用户对事件编写代码,
调用操作系统API实现相应的功能;
Tip:
掌握消息本身,不同的消息代表用户操作和程序状态;
掌握操作系统API,对特定的消息,要让操作系统执行特定的功能去响应这个消息;
VC++之Windows程序运行原理
最新推荐文章于 2019-04-07 19:25:09 发布
本文详细介绍了基于事件驱动的消息机制原理及其在Windows编程中的应用。包括如何使用结构体MSG传递事件,应用程序如何通过消息队列获取并响应这些事件,以及操作系统API在消息处理中的作用。
129

被折叠的 条评论
为什么被折叠?



