禁止对话框窗口的改变和实现窗口的拉伸
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
响应这个函数
(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); } |
相关文章推荐
- (VC/MFC)禁止对话框(窗口)的大小改变和移动
- (VC/MFC)禁止对话框(窗口)的大小改变和移动
- MFC对话框控件和背景图片自适应窗口最大化和拉伸缩放的实现
- MFC对话框控件和背景图片自适应窗口最大化和拉伸缩放的实现
- VC++6.0禁止改变单文档窗口大小,修改标题的实现
- VC++6.0禁止改变单文档窗口大小,修改标题的实现
- 禁止对话框(窗口)的大小改变和移动
- VC++自己创建窗口时禁止窗口拉伸改变大小
- VC++6.0禁止改变单文档窗口大小,修改标题的实现
- QT实现可移动和改变尺寸的无边框窗口
- 六,关闭窗口X的控制,MFC 禁止对话框关闭按钮和Alt+F4
- WM_SIZE实现窗口改变时,改变控件的位置和大小
- duilib 如何实现初始化时最大化窗口以及禁止窗口双击放大和移动窗口
- 4000 c#实现窗体大小改变时,控件大小也跟着改变,实现窗体拉伸重绘
- 关于在MFC中实用在基于对话框窗口上面绘制折线的实现方法
- win32应用禁止改变窗口大小方法
- 动态改变DataWindow控件窗口中内容的几种实现方法
- PB [Grid风格数据窗口改变线条颜色] 的变通实现方法(也可以成为 带表头的Grid数据窗口)
- 【MFC-10】VS2010/MFC基于对话框程序的登录窗口实现
- 禁止改变对话框大小