2015-11-17 10 views

答えて

10

これはMicrosoft Spy++に確認するのはとても簡単です。私の場合は、2台のモニターを接続し、2台目のモニターをオン/オフに切り替えてWindows 7 x64をチェックしました。モニターを取り外すときは、モニターを追加するとき

あなたはWM_DISPLAYCHANGEを参照してくださいではなくなります。

WM_DEVICECHANGEDBT_DEVNODES_CHANGEDRegisterDeviceNotification以降)と表示されます。

SPI_SETWORKAREASPI_ICONVERTICALSPACINGについては、WM_SETTINGCHANGEが表示されます。

「UxdDisplayChangeMes​​sage」と「HotplugDetected」という2つのメッセージが表示されます。 RegisterWindowMessageを使用して、これらのメッセージの識別子を取得できます。私が考えることができる

+0

エッジケースは、それを拡張するのではなく、ディスプレイのミラーリングされたモニタを追加しています。作業領域が変更されていない場合でも 'SPI_SETWORKAREA'を取得できますか? – indiv

+0

@indivわかりません。結果は私が作成したテストからのものです。あなたはSpy ++で自分で簡単に確認できます。私が推測する必要がある場合は、I'ldはUxdDisplayChangeMes​​sage、HotplugDetectedとWM_DEVICECHANGEを見ることを期待しますが、WM_DISPLAYCHANGEとWM_SETTINGCHANGEません。 –

+1

@WernerHenze:ありがとう。 'wParam == SPI_SETWORKAREA'を使って' WM_SETTINGCHANGE'を実行すると、すべてのOSがXPに追加され、モニターが削除されるというトリックがあるようです。私はあなたの提案されたソリューションの残りについてはよく分かりません。 Spy ++が何かを示しても、それが文書化されたアプローチであるということではありません。 – c00000fd

関連する問題