您的位置:首页 > 其它

禁止对话框窗口的改变和实现窗口的拉伸

2010-05-20 20:06 330 查看
1.禁止对话框窗口的改变

(1)响应WM_SYSCOMMAND 消息

void CMfcDemoDlg::OnSysCommand(UINT nID, LPARAM lParam)
{

if (nID == SC_MOVE || nID==SC_MINIMIZE||nID==SC_MAXIMIZE||SC_CLOSE)
return;
else
CDialog::OnSysCommand(nID, lParam);

}

此函数的功能是使对话框禁止改变大小和最大化、最小化、关闭按钮失效。

(2)

LRESULT CMfcDemoDlg::OnNcHitTest(CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值

UINT ret =(UINT)CDialog::OnNcHitTest(point);

if(HTCAPTION == ret)
return HTCLIENT;

return ret;

}

(3)LRESULT CMfcDemoDlg::OnNcHitTest(CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值

UINT ret =(UINT)CDialog::OnNcHitTest(point);

//if语句的前两行是用来禁止改变大小的,最后一行是用来禁止移动的

if(HTTOP ==ret || HTBOTTOM == ret || HTLEFT == ret || HTRIGHT == ret
|| HTBOTTOMLEFT == ret ||HTBOTTOMRIGHT == ret || HTTOPLEFT == ret || HTTOPRIGHT == ret || HTCAPTION== ret)
return HTCLIENT;

return ret;

}

2.

随意拉伸无标题对话框的大小

首先把对话框的Border的属性设为None
然后将System Menu属性设为False

响应这个函数

复制代码

LRESULT CtestDlg::OnNcHitTest(CPoint point)

{

// TODO: 在此添加消息处理程序代码和/或调用默认值

CRect rect;

GetWindowRect(&rect);

if(point.x <= rect.left + 5 && point.y <= rect.top + 5)

{

return HTTOPLEFT;

}

else if(point.x >= rect.right - 5 && point.y <= rect.top + 5)

{

return HTTOPRIGHT;

}

else if(point.x <= rect.left + 5 && point.y >= rect.bottom - 5)

{

return HTBOTTOMLEFT;

}

else if(point.x >= rect.right - 5 && point.y >= rect.bottom - 5)

{

return HTBOTTOMRIGHT;

}

else if(point.x <= rect.left + 5)

{

return HTLEFT;

}

else if(point.x >= rect.right - 5)

{

return HTRIGHT;

}

else if(point.y <= rect.top + 5)

{

return HTTOP;

}

else if(point.y >= rect.bottom - 5)

{

return HTBOTTOM;

}

return CDialog::OnNcHitTest(point);

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: