MFC无标题栏对话框移动的处理方法
时间: 2024-02-17 22:24:55 浏览: 80
要让MFC无标题栏对话框可以移动,可以在对话框类中添加以下代码:
```
BOOL CMyDialog::OnInitDialog()
{
CDialog::OnInitDialog();
// 设置无边框
ModifyStyle(WS_CAPTION, 0);
// 获取系统菜单
CMenu *pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
// 去掉关闭菜单项
pSysMenu->RemoveMenu(SC_CLOSE, MF_BYCOMMAND);
}
return TRUE;
}
void CMyDialog::OnLButtonDown(UINT nFlags, CPoint point)
{
// 鼠标左键按下,开始拖动
ReleaseCapture();
SendMessage(WM_NCLBUTTONDOWN, HTCAPTION, 0);
CDialog::OnLButtonDown(nFlags, point);
}
```
首先,在OnInitDialog函数中,使用ModifyStyle函数去掉对话框的标题栏。然后,获取系统菜单并去掉关闭菜单项。
接着,在OnLButtonDown函数中,当鼠标左键按下时,调用ReleaseCapture函数和SendMessage函数,将消息发送给窗口,让它开始拖动。
注意:这种方法只适用于无边框的对话框,如果需要在有边框的对话框中移动,可以使用MFC提供的CRectTracker类来实现。
阅读全文