当前位置: 首页 > 编程语言 > C#

Winforms控制窃取WndProc WM_NCHITEST分享

时间:2023-04-11 01:28:23 C#

C#学习教程:WinformsControlStealsWndProcWM_NCHITEST当页面上没有控件时它工作正常,但是当我向页面添加面板时,我的WndProc函数停止接收WM_NCHITEST事件。知道我能做些什么来阻止它吗?更新:我的窗口通常是无边框的,但是当我在边框模式下运行它时,当光标悬停在窗口框架上时会调用WM_NCHITTEST事件,这让我觉得我拥有的表单大小控件(Chromium嵌入式Web浏览器)正在拦截消息。有什么方法可以从格式错误的窗口中重新获得对WndProc的控制权?protectedoverridevoidWndProc(refMessagem){if(m.Msg==0x0083)//WM_NAlSIZE{if(borderless){返回;//即使在页面上有控件也能工作。}}if(m.Msg==0x0084)//WM_NCHITEST{Debug.Print("如果页面上有控件我就不打印:(");}base.WndProc(refm);}有运行Chromium嵌入式Web浏览器的两个复杂问题,它首先创建自己的窗口并将其作为子窗口附加到您的窗口,这意味着您需要拦截子窗口的WndProc。其次,CefSharp以multi_threaded_message_loop=true运行,这实际上激活了一个新的线程来处理浏览器的消息,这意味着您需要在UI线程及其输入之间来回小心。该解决方案涉及对PInvoke的自由使用,因此我为它做了一个要点。CefSharpChromium嵌入式浏览器专用的子窗口消息查看方法见C#学习教程:Winforms控件窃取WndProcWM_NCHITEST共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关照——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: