首页 > 解决方案 > 在对话框之间自动移动焦点

问题描述

我有一个模态对话框,在按下按钮时显示一个无模式的“伴随对话框”。为了使 UI 更加直观和流畅,我希望焦点跟随鼠标并在对话框之间移动,而无需额外点击。

是否有一个简单的消息处理程序可以在这里提供帮助?我想我可以通过在每个对话框中使用TrackMouseEventand来做到这一点OnMouseHover——但对于这种“简单”的效果来说,这似乎很重要?

标签: mfcmodal-dialogfocusmodeless-dialog

解决方案


好的……所以我完全想多了!只需使用OnMouseMoveOnNcMouseMove

//------------------------------------------------------------------------------
void DlgA::OnMouseMove(UINT nFlags, CPoint point)
//------------------------------------------------------------------------------
{
    HWND hwnd = ::GetActiveWindow();
    if (pDlgB != NULL)
    {
        if (hwnd == pDlgB->GetSafeHwnd())
        {
            // Make the focus switch automatically
            SetFocus();
        }
    }
}

推荐阅读