7
我正在開發一個支持主窗體中的Windows Aero的C#應用程序。如何在訂閱DWM組合/ Aero Glass禁用時引發的操作系統級事件?
某些不支持視覺樣式的應用程序(例如GoToMeeting)會禁用視覺樣式,並且在GoToMeeting正在運行時(Aero客戶端區域被繪製爲黑色),會錯誤地繪製表單。
如何禁用視覺樣式時如何訂閱觸發的操作系統事件?然後我可以調整我的窗口中的客戶區域以正確繪製。
託管和非託管解決方案對我而言是有效的。
在此先感謝。
編輯:根據漢斯的答案,這裏是管理這個事件的代碼:
private const int WM_DWMCOMPOSITIONCHANGED = 0x31e;
[DllImport("dwmapi.dll")]
private static extern void DwmIsCompositionEnabled(ref bool pfEnabled);
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_DWMCOMPOSITIONCHANGED)
{
bool compositionEnabled = false;
DwmIsCompositionEnabled(ref compositionEnabled);
if (compositionEnabled)
{
// composition has been enabled
}
else
{
// composition has been disabled
}
}
base.WndProc (ref m);
}
會檢測您是否啓用了Aero之後?如果是這樣,這可能有所幫助:http://stackoverflow.com/questions/5114389/how-make-sure-areo-effect-is-enabled – joshhendo 2011-04-20 13:04:11