在MFC下,对对话框只能在标题栏中拖动。对于无标题对话框的拖动,需要在mousemove事件中触发WM_NCHITTEST消息。
对对话框的WM_MOUSEMOVE消息进行处理。
void CRemoteVideoDialog::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(nFlags==MK_LBUTTON)
PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM( point.x, point.y));
CDialog::OnMouseMove(nFlags, point);
}
怎样将一个对话框现在在另一个对话框中呢。在定义被限制的对话框的时候,需要设置其样式为child,边框为thin,然后在主对话框类中定义这个类的成员变量,然后再初始化函数中将其显示就可以了。
但是这样对刷新子窗口可能会引起子窗口的闪烁,解决办法就是将父窗口的模式设置为CLIPCHILDREN,就可以了。
对于子窗口在父窗口中的位置调整可以使用。
GetWindowRect(&rt);
childrenDlg.GetClientRect(&clirt);
childrenDlg.MoveWindow(&clirt);
这里的子窗口的MoveWindow是相对于父窗口的位置。