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以后就不能任意位置移动窗体了呢,
麻烦行家指点下
展开
 我来答
火沙
2009-06-12 · TA获得超过954个赞
知道小有建树答主
回答量:478
采纳率:0%
帮助的人:398万
展开全部
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);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沧海V飞天
2009-06-11 · TA获得超过450个赞
知道小有建树答主
回答量:394
采纳率:0%
帮助的人:269万
展开全部
this.ClientSize = new System.Drawing.Size(987, 532);
this.MaximumSize = new System.Drawing.Size(995, 566);

这样最大化就没用了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
微软专家张海
2009-06-11 · TA获得超过748个赞
知道小有建树答主
回答量:564
采纳率:100%
帮助的人:0
展开全部
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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式