无标题对话框的拖动和对话框位置限制

在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是相对于父窗口的位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值