Mfc 如何捕捉对话框的移动事件?

Mfc 如何捕捉对话框的移动事件?,mfc,Mfc,在我的对话框中,我有一个丰富的编辑控件。在richeditcontrol中键入时,我显示了一个自动完成的列表框 要显示此列表框,请按照此链接中的建议,在对话框中所有子控件的顶部, 我使用WS_弹出窗口创建了一个CWnd实例,并创建了CListBox实例作为该CWnd的子实例 现在,当我移动对话框或更改位置时,我需要更改我创建的弹出窗口和列表框的位置 在移动对话框时,我试图捕捉on_wm_poschanged、on_move和onsize事件,但没有触发 如何捕捉对话框的移动事件 我的对话框具有w

在我的对话框中,我有一个丰富的编辑控件。在richeditcontrol中键入时,我显示了一个自动完成的列表框

要显示此列表框,请按照此链接中的建议,在对话框中所有子控件的顶部, 我使用WS_弹出窗口创建了一个CWnd实例,并创建了CListBox实例作为该CWnd的子实例

现在,当我移动对话框或更改位置时,我需要更改我创建的弹出窗口和列表框的位置

在移动对话框时,我试图捕捉on_wm_poschanged、on_move和onsize事件,但没有触发

如何捕捉对话框的移动事件

我的对话框具有ws_子样式。 这是我的信息地图

    BEGIN_MESSAGE_MAP(CMyChildDlg, CMyDlg)
        ON_WM_SIZE()
        ON_WM_WINDOWPOSCHANGING()
        ON_WM_MOVING()
        ON_MOVE()
        ON_WM_WINDOWSPOSCHANGED()
    END_MESSAGE_MAP()

void CMyChildDlg::OnSize(UINT nType, int cx, int cy) 
{
    CDialog::OnSize(nType, cx, cy);
}

void CMyChildDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) 
{
     CDialog::OnWindowPosChanging(lpwndpos);

}

void CMyChildDlg::OnMove(int x, int y)
{
    CDialog::OnMove(nType, cx, cy);
}

void CMyChildDlg::OnMoving(UINT nSide, LPRECT lpRect)
{
    CDialog::OnMoving(nSide, lpRect);
}

void CMyChildDlg::OnWindowPosChanged(WINDOWPOS FAR* lpwndpos) 
{
     CDialog::OnWindowPosChanging(lpwndpos);
}

但是移动对话框时不会捕获这些事件。

您是否将
放在消息映射中的\u WM\u SIZE()
上?请显示一些代码,特别是对话框的消息映射。我在Windows PosChange()上尝试了Windows PosChange(),在Windows PosChanged上尝试了移动()上尝试了Windows PosChanged。移动对话框时未捕获这些事件。请不要在注释中发布代码,而是在您的问题中发布代码。并显示更多代码。并显示真实的代码,而不是一些重新键入的上下文片段。没有足够的信息,您需要发布一个。这意味着您需要做一些工作。移动父窗口时,子窗口不会收到通知,因为子窗口的坐标相对于父窗口不会更改。你必须在父母那里抓住这些。