仅消息窗口是否可以接收WM_QUERYENDSESSION?

And*_*urg 2 windows winapi

在程序的调试版本中,我创建了一个可见窗口,并且WM_QUERYENDSESSION消息由WNDPROC.在发行版本中,窗口应该是消息而已,所以我指定HWND_MESSAGEhWndParent调用时CreateWindowEx().不幸的是,我再也没有收到WM_QUERYENDSESSION消息了.是WM_QUERYENDSESSION提到的广播消息的一个位置?"仅消息窗口[...]不接收广播消息."

Han*_*ant 5

MSDN为"仅消息窗口"提供了一个不错的定义:

只有消息的窗口使您可以发送和接收消息.它不可见,没有z顺序,无法枚举,也不接收广播消息.该窗口只是调度消息.

突出了相关细节.

您可以使用它们来利用您自己的代码中的消息调度机制.最常见的是让工作线程以线程安全的方式与UI线程通信.消息循环是生产者 - 消费者问题的通用解决方案.COM中的公寓编组实现了一个仅消息窗口.显然,这样的窗口应该是隐藏的,只能获取应用程序定义的消息.

调用CreateWindowEx时,不要将HWND_MESSAGE用作hWndParent.