【发布时间】:2016-02-19 03:08:42
【问题描述】:
我很好奇,当系统中的监视器数量发生变化时,广播的Win32通知是什么?我以为是WM_DISPLAYCHANGE,但我错了。
【问题讨论】:
我很好奇,当系统中的监视器数量发生变化时,广播的Win32通知是什么?我以为是WM_DISPLAYCHANGE,但我错了。
【问题讨论】:
这很容易通过Microsoft Spy++ 进行检查。在我的情况下,我检查了 Windows 7 x64,连接了两台显示器,然后关闭并再次打开第二台显示器。
删除监视器时,您会看到WM_DISPLAYCHANGE,但添加监视器时不会。
您将看到WM_DEVICECHANGE 和DBT_DEVNODES_CHANGED(在RegisterDeviceNotification 之后)。
对于SPI_SETWORKAREA 和SPI_ICONVERTICALSPACING,您将看到WM_SETTINGCHANGE。
您将看到注册消息“UxdDisplayChangeMessage”和“HotplugDetected”(仅在添加监视器时第二条)。您可以使用RegisterWindowMessage 来获取这些消息的标识符。
【讨论】:
SPI_SETWORKAREA 吗?
WM_SETTINGCHANGE 和 wParam == SPI_SETWORKAREA 似乎可以在所有操作系统上添加和删除显示器,直到 XP。不过,我不确定您提出的其他解决方案。如果 Spy++ 显示了某些东西,并不意味着它是一种记录在案的方法。