在 MFC 中拖动子对话框时如何移动父对话框?
Posted
技术标签:
【中文标题】在 MFC 中拖动子对话框时如何移动父对话框?【英文标题】:How do i move parent dialog when dragging child dialog, in 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;
【问题讨论】:
【参考方案1】:问题是鼠标输入被孩子使用了。因此,单击子窗口并拖动到那里,通常会选择子窗口中的一些数据(在编辑控件中)。或者对于静态控件,鼠标输入被转发到父级。
所以你。需要决定...您始终可以在 WM_NCHITTEST 中处理此问题并返回 HTCAPTION,或者您允许父级在返回 HTTRANSPARENT 时处理此问题。
顺便说一句:如果您想在客户端区域中使用鼠标移动窗口,只需处理 WM_NCHITTEST 并返回 HTCAPTION。无需自己实现鼠标移动处理程序。
【讨论】:
以上是关于在 MFC 中拖动子对话框时如何移动父对话框?的主要内容,如果未能解决你的问题,请参考以下文章