-
1.系统定义的消息
1)标准消息。
除 WM 命令外,所有以 WM 开头的消息都是标准消息,例如鼠标单击、移动、左键单击、键盘上的右键单击。
2)命令消息。
来自菜单、快捷键或工具栏按钮的消息。 这些消息以 wm-command 的形式呈现。 WM 命令,LoWord (WPARAM) 指示菜单项、工具栏按钮或常规控件(如框、按钮等)的 ID。
对于控件,hiword(wparam) 表示控件消息类型。
3)通知消息。
由复杂控件生成的消息。 这种类型的消息也以 wm-command 的形式呈现。 这是最灵活的消息格式,分别有 message、wparam 和 lparam
WM 通知、控制 ID、指向 NMHDR 的指针。 NMHDR包含控制通知的内容,可以任意扩展。
2.应用程序定义的消息 用户定义的消息,其范围指定如下: wm 用户:
0x0400-0x7fff (ex. wm_user+10)
-
在 Windows 单元中说明如下:
typetmsg = packed record
hwnd: hwnd;窗口手柄。
message: uint;消息常量标识符。
wparam: wparam ;32 位消息的特定附加信息。
lparam: lparam ;32 位消息的特定附加信息。
time: dword;创建消息的时间。
pt: tpoint;创建消息时鼠标的位置。
end;参数说明:
HWND:3 个 2 位窗口手柄。 Windows 可以是任何类型的屏幕对象,因为 Win32 能够维护大多数可视对象的句柄。
message:用于区分其他消息的常量值,可以是 Windows 单位的预定义常量,也可以是自定义常量。
wparam:通常是与消息相关的常量值,或者可能是窗口或控件的句柄。
lparam:通常是指向内存中数据的指针。 由于 w p a r a m、l p a r a m 和 p o i n t e r 都是 3 个 2 位,
-
Windows 消息是来自 Windows 的通知,它通知应用程序发生了某些事情。 例如,单击鼠标、更改窗口大小或按键盘上的键将导致 Windows 向应用程序发送消息。 消息本身作为包含消息类型和其他信息的记录传递到应用程序。
例如,对于鼠标单击生成的消息,此记录包含鼠标单击的坐标。 此记录类型称为 TMSG,<>
-
Windows 的消息传递系统由 3 个部分组成:
消息队列。 Windows 能够维护所有应用程序的消息队列。 必须从消息队列中提取应用程序。
消息,然后将其分配给窗口。
消息循环。 通过此循环机制,应用程序从消息队列中检索消息,并将其分派到相应的窗口。
之后,从消息队列中检索下一条消息,然后依次分配给相应的窗口。
窗口过程。 每个窗口都有一个窗口进程来接收传递到窗口的消息,其任务是获取消息。
回应它。 窗口过程是一个**函数; 处理消息后,它通常会向 Windows 返回一个值。
请注意,函数是由 Windows 或外部模块调用的程序中的函数。
消息从生成到窗口响应消息有 5 个步骤
1) 系统中发生了事件。
2) Windows 将事件转换为消息并将其放入消息队列中。
3) 应用程序从消息队列接收消息并将其存储在 TMSG 记录中。
4) 应用程序通过窗口进程将消息传递到适当的窗口窗口。
5) 窗口进程响应此消息并对其进行处理。
步骤 3 和 4 构成了应用程序的消息循环。 由于消息循环,消息循环往往是 Windows 应用程序的核心。
使应用程序能够响应外部事件。 消息循环的任务是从消息队列中检索消息并将其传递到相应的窗口。 如果消息队列中没有消息,则 Windows 允许其他应用程序处理其消息。
Windows操作系统最大的特点是它的图形化操作界面,它基于它的消息处理机制。 如果你不理会 Li 悄悄地讲解 Windows 消息处理机制,你肯定无法深入理解 Windows 编程。 不幸的是,许多程序员只听说过一点 Windows 消息,对它们的使用知之甚少,更不用说它们的内部实现了。
可以说,掌握这部分知识就是掌握了Windows编程中的法宝,灵活运用它将大大提高我们的编程能力。
酱汁,只要你觉得好吃,就不能争辩,这有什么特别的限制吗? 你可以自己试试。 餐馆通常使用苦瓜和千岛酱(一种含有番茄酱的沙拉酱)。 >>>More