我看到在这个论坛上发布的代码,用于移动没有边框的WinForm,但我的对话框(C#)有一个覆盖整个区域的面板。我知道我必须使用WndProc
来做到这一点。我不知道该做什么。我的窗户不移动,除非我通过缩小面板的大小来暴露它的一部分。谢谢。
我的代码:
protected override void WndPro(ref Message m)
{
switch(m.Msg)
{
case 0x84:m.Result = new intPtr(0x2);
return
}
base.wndProc(ref m);
}
答案 0 :(得分:2)
除了退回HTTRANSPARENT之外,您需要给面板提供相同的治疗。这使得命中测试变得透明,表单将获得消息。现在它有效。在项目中添加一个类并粘贴下面显示的代码。编译。用这个替换现有的面板。
using System;
using System.Windows.Forms;
class BackPanel : Panel {
protected override void WndProc(ref Message m) {
if (m.Msg == 0x84) m.Result = (IntPtr)(-1);
else base.WndProc(ref m);
}
}