使用客户区拖动 CMDIChildWnd
Drag CMDIChildWnd using client area
我正在尝试创建一个 CMDIChildWnd
没有标题栏,可在客户区使用鼠标拖动。
进入我添加的消息映射
ON_WM_LBUTTONDOWN()
和
void CChildFrame::OnLButtonDown(UINT nFlags, CPoint point)
{
SendMessage(WM_SYSCOMMAND, SC_MOVE | 0x0002);
}
结果是 child windows 可以根据需要使用鼠标移动,但只能在其区域内移动。
知道我该如何继续吗?
我用了一个小技巧。实现该行为的 class 是 CFormView 的派生 class,我能够按预期移动 window,将 htcaption 消息发送给父级
void derived_CFormView::OnLButtonDown(UINT nFlags, CPoint point)
{
CFormView::OnLButtonDown(nFlags, point);
GetParentFrame()->PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y));
}
void derived_CFormView::OnLButtonUp(UINT nFlags, CPoint point)
{
CFormView::OnLButtonUp(nFlags, point);
GetParentFrame()->PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y));
}
我正在尝试创建一个 CMDIChildWnd
没有标题栏,可在客户区使用鼠标拖动。
进入我添加的消息映射
ON_WM_LBUTTONDOWN()
和
void CChildFrame::OnLButtonDown(UINT nFlags, CPoint point)
{
SendMessage(WM_SYSCOMMAND, SC_MOVE | 0x0002);
}
结果是 child windows 可以根据需要使用鼠标移动,但只能在其区域内移动。
知道我该如何继续吗?
我用了一个小技巧。实现该行为的 class 是 CFormView 的派生 class,我能够按预期移动 window,将 htcaption 消息发送给父级
void derived_CFormView::OnLButtonDown(UINT nFlags, CPoint point)
{
CFormView::OnLButtonDown(nFlags, point);
GetParentFrame()->PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y));
}
void derived_CFormView::OnLButtonUp(UINT nFlags, CPoint point)
{
CFormView::OnLButtonUp(nFlags, point);
GetParentFrame()->PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y));
}