在Windows SDK编程中,这种功能很容易实现:只要在收到WM_NCHITTEST消息的时候总是返回HTCAPTION就可以了
对于.NET,我觉得最好的办法就是编写一个MyForm类型,从Form继承,并且override WndProc方法,在收到WM_NCHITTEST消息时返回HTCAPTION(具体的数值可以在Windows.h中找到)
这样做不过是“欺骗”Windows,使其认为整个窗口都是“标题栏”
把下面这段代码加到VS.NET生成的从Form继承的类当中即可实现
private int WM_NCHITTEST = 0x0084;
private int HTCAPTION = 2;
protected override void WndProc(ref System.Windows.Forms.Message msg)
{
if (msg.Msg == WM_NCHITTEST)
msg.Result = (System.IntPtr)HTCAPTION;
else base.WndProc(ref msg);
}
Windows在特定的时候会询问应用程序当前的鼠标在窗口的什么位置,通过发送WM_NCHITTEST消息,应用可以通知Windows,当前鼠标停留在标题兰(HTCAPTION),而Windows在鼠标在标题栏拖动的时候会拖动整个窗口
.
对于.NET,我觉得最好的办法就是编写一个MyForm类型,从Form继承,并且override WndProc方法,在收到WM_NCHITTEST消息时返回HTCAPTION(具体的数值可以在Windows.h中找到)
这样做不过是“欺骗”Windows,使其认为整个窗口都是“标题栏”
把下面这段代码加到VS.NET生成的从Form继承的类当中即可实现
private int WM_NCHITTEST = 0x0084;
private int HTCAPTION = 2;
protected override void WndProc(ref System.Windows.Forms.Message msg)
{
if (msg.Msg == WM_NCHITTEST)
msg.Result = (System.IntPtr)HTCAPTION;
else base.WndProc(ref msg);
}
Windows在特定的时候会询问应用程序当前的鼠标在窗口的什么位置,通过发送WM_NCHITTEST消息,应用可以通知Windows,当前鼠标停留在标题兰(HTCAPTION),而Windows在鼠标在标题栏拖动的时候会拖动整个窗口
.