如何在MFC中拖动子对话框时移动父对话框

How do i move parent dialog when dragging child dialog, in MFC?

本文关键字:对话框 移动 拖动 MFC      更新时间:2023-10-16

确实需要一些帮助拖动子对话框时,如何移动父对话框?

我有它,这样当我拖动父对话框时,子对话框也会移动,但不是相反的关系。

如有任何帮助,我们将不胜感激,谢谢!

我的主对话.cpp:

void MainDialog::OnMove(int x, int y)
{
    CDialog::OnMove(x, y);
    m_pDialog->SetWindowPos(&wndTop, x, y, 50, 50, SWP_NOZORDER);  // child dialog
}
BEGIN_MESSAGE_MAP(CTranslucentDialog, CDialog)
    //AFX_MSG_MAP
    ON_WM_ERASEBKGND()
    ON_WM_MOVE()
    ON_WM_SIZE()
    ON_WM_CREATE()
    ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()

谢谢,我为NCHITTEST创建了一个处理程序并返回HTTRANSPARENT,从而使它能够正常工作。

LRESULT CGadgetStandardDialog::OnNcHitTest(CPoint point)
{
    return HTTRANSPARENT;
}

问题是鼠标输入由子项消耗。因此,在子窗口中单击并拖动,通常会选择子窗口中的一些数据(在编辑控件中)。或者,对于静态控件,鼠标输入将转发给父对象。

你也是。需要决定。。。您始终可以在WM_NCHITTEST中处理此问题并返回HTCAPTION,或者允许父级在返回HTTRANSPARENT中处理此情况。

BTW:如果你也想在客户端区域用鼠标移动窗口,只需处理WM_NCHITTEST并返回HTCAPTION。不需要实现鼠标移动处理程序并自行完成。