【问题标题】:How do i move parent dialog when dragging child dialog, in MFC?在 MFC 中拖动子对话框时如何移动父对话框?
【发布时间】:2013-12-04 06:56:44
【问题描述】:

真的需要帮助 拖动子对话框时如何移动父对话框?

我有它,当我拖动父对话框时,子对话框也被移动,但不是反向关系。

任何帮助将不胜感激,谢谢!

我的主对话框.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;
}

【问题讨论】:

    标签: c++ mfc


    【解决方案1】:

    问题是鼠标输入被孩子使用了。因此,单击子窗口并拖动到那里,通常会选择子窗口中的一些数据(在编辑控件中)。或者对于静态控件,鼠标输入被转发到父级。

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

    顺便说一句:如果您想在客户端区域中使用鼠标移动窗口,只需处理 WM_NCHITTEST 并返回 HTCAPTION。无需自己实现鼠标移动处理程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-14
      • 1970-01-01
      相关资源
      最近更新 更多