我创建了一个简单的窗口来接收消息:
CreateWindow(L"MyClass", 0, 0, 0, 0, 0, 0, HWND_MESSAGE, 0, 0, 0);
我对WM_DISPLAYCHANGE
很感兴趣,它可以检测显示器何时插入/拔出,但我从来没有收到消息。我的窗口收到其他消息,但从来没有WM_DISPLAYCHANGE
。为什么?
我创建了一个简单的窗口来接收消息:
CreateWindow(L"MyClass", 0, 0, 0, 0, 0, 0, HWND_MESSAGE, 0, 0, 0);
我对WM_DISPLAYCHANGE
很感兴趣,它可以检测显示器何时插入/拔出,但我从来没有收到消息。我的窗口收到其他消息,但从来没有WM_DISPLAYCHANGE
。为什么?
2条答案
按热度按时间nue99wik1#
这可能与此有关:
仅消息窗口
hs1ihplo2#
也许你应该满足以下两个条件,如果你想从Windows接收WM_DISPLAYCHANGE消息:
1.顶级窗口,您应该创建一个hwndParent参数为NULL或HWND_DESKTOP的窗口
1.消息循环,就像这样:
我已经测试了禁用消息循环,例如在消息循环之前使用
while(1) {}
,在这种情况下,当分辨率更改时,我无法接收WM_DISPLAYCHANGE。