c# – 当禁用DWM组合/ Aero Glass时,如何订阅引发的OS级事件?
发布时间:2020-12-15 07:58:37 所属栏目:百科 来源:网络整理
导读:我正在开发一个以主窗体支持 Windows Aero的C#应用??程序. 某些不支持视觉样式的应用程序(例如GoToMeeting)禁用了视觉样式,并且在GoToMeeting运行时错误地绘制了我的表单(Aero客户端区域被绘制为黑色). 我如何订阅禁用视觉样式时触发的OS事件?然后我可以调
我正在开发一个以主窗体支持
Windows Aero的C#应用??程序.
某些不支持视觉样式的应用程序(例如GoToMeeting)禁用了视觉样式,并且在GoToMeeting运行时错误地绘制了我的表单(Aero客户端区域被绘制为黑色). 我如何订阅禁用视觉样式时触发的OS事件?然后我可以调整窗口中的客户区域以正确绘制. 托管和非托管解决方案对我有效. 提前致谢. 编辑:根据Hans的回答,这是管理此事件的代码: 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); } 解决方法
Windows将消息发送到您的顶层窗口.你可以将它捕获到Winforms表单的WndProc覆盖中.侦听WM_DWMCOMPOSITIONCHANGED,消息号0x31e.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |