为什么不让应用程序在抓到消息(通过GetMessage())之后,直接调用窗口函数处理消息呢?

潇潇雨云 潇潇雨云 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
windows的窗口过程函数,也就是向windows注册的窗体类的lpfnWndProc项所指向的函数,都被设计为回调函数呢?

为什么不让应用程序在抓到消息(通过GetMessage())之后,直接调用窗口函数处理消息呢?

侯捷在《深入浅出MFC中》,曾简单提到原因为“除了你需要调用它,有很多时候操作系统也需要调用你的窗口函数(例如当某个消息产生或某个事件发生)。窗口函数设计为callback形式,才能开放出一个接口给操作系统调用。”
我不太明白 ……
...全文

相关推荐

MFC中的消息循环和窗口函数

窗口函数可以在两个地方被调用:一是在应用程序中,由程序员手动调用;二是在Windows操作系统中,由操作系统自动调用。在应用程序中,窗口函数可以通过手动调用来处理消息。

xuexijavakaifa

从内核层说清GetMessage , DispatchMessage

要点回顾: 一个GUI线程有一个消息队列: 普通线程–>GUI线程–>THREAD.W32THREAD -->THREADINFO–>消息队列 一个线程可以有多个窗口,所有窗口共享一个消息队列: _WINDOW_OBJECT ---->PTHREADINFO pti //所属线程 ---->WNDPROC IpfnWndProc //窗口过程(窗口回调函数) 为什么拿到句柄非得要回零环? GetMessage(&msg, NULL, 0, 0) Translate

寻梦&之璐

MFC拦截消息方法PreTranslateMessage

如果PreTranslateMessage函数返回TRUE,那么消息将不会被分发给窗口函数处理。如果返回FALSE,那么消息将被正常处理。

SanDy_O

Visual C++模态对话框消息处理机制的分析

Windows消息机制的具体实现涉及MSG结构体,该结构体包含了窗口句柄、消息标识号、消息参数等。窗口函数是一个由Windows直接调用的函数,用于处理特定窗口的消息。

weixin_38516270

窗口消息处理

窗口消息处理是Windows编程的核心部分,它涉及到用户与应用程序之间的交互。Windows窗口通过消息机制来接收和处理用户的输入,如鼠标点击、键盘按键等。

Tealey
评论 7
收藏 已收藏
分享
返回顶部
潇潇雨云
VC/MFC 16,550 成员 421,606 内容