c++ - 在MFC中拖动子对话框时如何移动父对话框?

标签 c++ mfc

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

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

非常感谢任何帮助,谢谢!

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

最佳答案

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

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

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

关于c++ - 在MFC中拖动子对话框时如何移动父对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20369002/

相关文章:

c++ - AfxGetInstanceHandle() 触发断言失败

c++ - 如何禁用 MFC 应用程序的 WinMain 入口点?

wpf - 如何防止 WPF 对话框中的键盘事件渗透到调用它的 MFC 应用程序?

c++ - CSocket::OnReceive 同时调用

C++:按值将对象传递给同一类的成员函数

c++ - 在 Linux 上使用控制台编译 C++ 时出现问题

c++ - 当 "virtual"位于 "class Foo : public virtual Bar"而不是 "virtual void frob()"时,这意味着什么?

c++ - 将结构指针转换为 C++ 中的 union 指针

c++ - 如何在 BFS (C++) 期间删除队列中的对象?

c++ - 如何将 CString 转换为 CHAR 数组?