使用客户区拖动CMDIChildWnd

时间:2015-02-24 16:26:04

标签: mfc

我试图在客户区使用鼠标创建一个没有标题栏的CMDIChildWnd

在消息地图中我添加了

ON_WM_LBUTTONDOWN()

void CChildFrame::OnLButtonDown(UINT nFlags, CPoint point)
{
    SendMessage(WM_SYSCOMMAND, SC_MOVE | 0x0002);
}

结果是子窗口根据需要使用鼠标移动,但仅在其区域内移动。

关于如何进行的任何想法?

1 个答案:

答案 0 :(得分:0)

我用一个小技巧做到了。实现行为的类是CFormView的派生类,我可以按预期将窗口移动到父窗口

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));
}