【问题标题】:WM_POWERBROADCAST not received by message-only window in Windows XPWindows XP 中的仅消息窗口未收到 WM_POWERBROADCAST
【发布时间】:2011-05-04 14:01:59
【问题描述】:

我正在尝试确定广播消息是否将发送到仅消息窗口,即创建为:

hWnd = CreateWindow(MAKEINTATOM(RegisterClass(&wnd)), NULL, 0, 0, 0, 0, 0, 0, HWND_MESSAGE, hInstance, 0);

问题是我没有收到任何广播消息到那个窗口... ;)

【问题讨论】:

  • 您是说您没有收到任何广播消息,还是只是您没有收到WM_POWERBROADCAST
  • 我也没有收到 WM_QUERYENDSESSION 消息。事情是我在某处读到 HWND_MESSAGE 窗口不接收操作系统广播,并且您需要一个顶级窗口。但我还没有找到任何文件来支持/揭穿这个......

标签: windows winapi windows-xp broadcast windows-messages


【解决方案1】:

你的怀疑是正确的。仅消息窗口(通过为CreateWindowEx 函数的hwndParent 参数指定HWND_MESSAGE 创建的窗口)不接收广播通知:

仅消息窗口使您能够发送和接收消息。它不可见,没有 z 顺序,无法枚举,并且不接收广播消息。窗口只是发送消息。

参考:MSDN

【讨论】:

  • RegisterPowerSettingNotification 是 Vista 及更高版本,此问题在 XP 上 ;)
  • @Robert:是的,没问题。抱歉,这不是您希望的答案。 ;-) 但是从文档中获得确认总是好的。只需创建一个顶级窗口,但不要使用 WS_VISIBLE 样式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
  • 2012-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多