|||____WM_QUIT 的拦截问题

叁哥_ 2008-08-24 02:54:46


各位大侠好!


照理说 WH_GETMESSAGE 在 peekmessage 和 getmessage 前得到 队列里的消息。


而且 WM_QUIT 应该是 进队列的.


我用spy++ 只有 在 选择 整个进程 消息拦截时 才能 拦截到 WM_QUIT.

如果选择拦截 进程内 任何一个 线程 的消息,就无法获得 WM_QUIT.

难道只有全局hook才能得到 WM_QUIT ?

那位老大 教导一下啊呀? (:
...全文
132 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2008-08-27
  • 打赏
  • 举报
回复
同意"WM_QUIT会进入消息队列."
schlafenhamster 2008-08-27
  • 打赏
  • 举报
回复
同意"WM_QUIT会进入消息队列."
schlafenhamster 2008-08-27
  • 打赏
  • 举报
回复
同意"WM_QUIT会进入消息队列."
龙凤呈祥焱 2008-08-27
  • 打赏
  • 举报
回复
WM_QUIT会进入消息队列.
但是,GetMessage收到这个消息后就会立即返回0,标准的消息循环在GetMessage返回0后就不再分发消息.所以你的消息处理函数是收不到这个消息的.
MSDN原文.
The WM_QUIT message is not associated with a window and therefore will never be received through a window's window procedure. It is retrieved only by the GetMessage or PeekMessage functions.
叁哥_ 2008-08-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhoujianhei 的回复:]
需要注意的是WM_QUIT不进入消息队列。
[/Quote]


强烈否定你的观点

身为两颗星星 是不应该乱说的
jameshooo 2008-08-24
  • 打赏
  • 举报
回复
拦截这个消息有意义吗,一般处理这个消息时,该关的窗口都已经关了,该做的清理也差不多清理完了,进程或线程也该退出了
bitxinhai 2008-08-24
  • 打赏
  • 举报
回复
添加虚函数BOOL PreTranslateMessage(MSG* pMsg) ;

根究pMsg就可以拦截你要的消息了!!!!
zhoujianhei 2008-08-24
  • 打赏
  • 举报
回复
需要注意的是WM_QUIT不进入消息队列。
Skight 2008-08-24
  • 打赏
  • 举报
回复
WM_QUIT是有消息队列的线程告诉自己要end的消息,拦截它没有实际意义。
叁哥_ 2008-08-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jameshooo 的回复:]
拦截这个消息有意义吗,一般处理这个消息时,该关的窗口都已经关了,该做的清理也差不多清理完了,进程或线程也该退出了
[/Quote]

说的也是哈


而且很多程序 退出 并没有出现 WM_QUIT

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧