
我是荔园微风,作为一名在IT界整整25年的老兵,今天来聊聊微软MFC技术中的消息队列及消息处理。
MFC应用程序中由Windows 系统以消息的形式发送给应用程序的窗口。窗口接收和处理消息之后,把控制返回给Windows。Windows系统在同一时间可显示多个窗口。此系统利用消息队列来记录鼠标和键盘输入到相应窗口等消息。如果用户移动鼠标或敲一下键盘,鼠标或键盘的设备驱动器都会把此输入转换成消息,并把它们放到系统消息队列中去。Windows从系统队列中每次读取一条消息, 然后将其从队列中删除,之后处理它们发送到相应的窗口过程。
消息队列是一种先进先出的队列型数据结构,它实际上是系统内核中的一个内部链表。用户可以从消息队列中添加消息和读取消息,而消息则被顺序地插入到队列中。其中发送进程将消息添加到队列末尾,接收进程会从队列头读取消息。
今天我们接之前的《微软MFC技术中的消息队列及消息处理(上)》继续往下讲。
详解具体实例——消息的处理
首先用visual studio 2022新建一个工程名为Win32_message的Win32应用程序。工程建好后,新建一个源文件,命名为 Win32_message.cpp。此程序实现的功能是创建一个窗口,当按键盘上的按键时,会出现一个消息盒子,如“所按键的字符值是98”。如果按下Backspace键时,一旦消息发送成功,会出现有“发送后退消息成功”提示语句的消息盒子,否则,会出现“发送后退消息失败”等类似其他消息响应。我们来看看下面的代码,先看此程序的入口函数WinMain()。
Win32应用程序入口函数示例:Win32_message.cpp
//Win32应用程序入口函数WinMain()
int WINAPI WinMain(
HINSTANCE hInstance, //指向当前实例的句柄
H

本文通过一个实例详细介绍了微软MFC技术中消息队列的工作原理和消息处理的过程。在创建Win32应用程序时,展示了如何使用WinMain函数初始化窗口类,创建窗口,并通过消息循环获取并处理消息。消息响应函数WinHouProc演示了如何处理WM_CHAR、WM_CLOSE和WM_DESTROY等关键消息,以及如何利用PostMessage和PostQuitMessage进行消息发送和窗口关闭。文章还提醒了在不同VC++版本中编码选项的重要性。
最低0.47元/天 解锁文章
2401

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



