C# 中使无标题窗口用鼠标点任意位置实现移动,但是双击会最大化,谁知道怎么屏蔽
protectedoverridevoidWndProc(refMessagem){constintWM_NCHITTEST=0x84;constintHTCLIENT=...
protected override void WndProc(ref Message m)
{
const int WM_NCHITTEST = 0x84;
const int HTCLIENT = 0x01;
const int HTCAPTION = 0x02;
const int WM_SYSCOMMAND = 0x0112;
const int SC_MAXMIZE = 0xF030;
switch (m.Msg)
{
case WM_NCHITTEST:
this.DefWndProc(ref m);
if (m.Result.ToInt32() == HTCLIENT)
m.Result = new IntPtr(HTCAPTION);
break;
case WM_SYSCOMMAND:
if (m.WParam.ToInt32() == SC_MAXMIZE)
MessageBox.Show("");
break;
default:
base.WndProc(ref m);
break;
}
}
第一个case是实现用鼠标点任意位置移动窗体
为什么加了第二个case以后就不能任意位置移动窗体了呢,
麻烦行家指点下 展开
{
const int WM_NCHITTEST = 0x84;
const int HTCLIENT = 0x01;
const int HTCAPTION = 0x02;
const int WM_SYSCOMMAND = 0x0112;
const int SC_MAXMIZE = 0xF030;
switch (m.Msg)
{
case WM_NCHITTEST:
this.DefWndProc(ref m);
if (m.Result.ToInt32() == HTCLIENT)
m.Result = new IntPtr(HTCAPTION);
break;
case WM_SYSCOMMAND:
if (m.WParam.ToInt32() == SC_MAXMIZE)
MessageBox.Show("");
break;
default:
base.WndProc(ref m);
break;
}
}
第一个case是实现用鼠标点任意位置移动窗体
为什么加了第二个case以后就不能任意位置移动窗体了呢,
麻烦行家指点下 展开
展开全部
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0201)
{
m.Msg = 0x00A1;//更改消息为非客户区按下鼠标
m.LParam = IntPtr.Zero;
m.WParam = new IntPtr(2);//鼠标放在标题栏内
}
base.WndProc(ref m);
}
{
if (m.Msg == 0x0201)
{
m.Msg = 0x00A1;//更改消息为非客户区按下鼠标
m.LParam = IntPtr.Zero;
m.WParam = new IntPtr(2);//鼠标放在标题栏内
}
base.WndProc(ref m);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
this.ClientSize = new System.Drawing.Size(987, 532);
this.MaximumSize = new System.Drawing.Size(995, 566);
这样最大化就没用了
this.MaximumSize = new System.Drawing.Size(995, 566);
这样最大化就没用了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
protected override void WndProc(ref Message m)
{
const int WM_SYSCOMMAND = 0x0112;
const int SC_MAXIMIZE = 0xF030;
if (m.Msg == WM_SYSCOMMAND && ((int)m.WParam == SC_MAXIMIZE ))
{
base.WindowState = FormWindowState.Normal;
return;
}
base.WndProc(ref m);
}
{
const int WM_SYSCOMMAND = 0x0112;
const int SC_MAXIMIZE = 0xF030;
if (m.Msg == WM_SYSCOMMAND && ((int)m.WParam == SC_MAXIMIZE ))
{
base.WindowState = FormWindowState.Normal;
return;
}
base.WndProc(ref m);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询