0

我有一个基于对话框的 MFC 应用程序。我有一个隐藏的编辑控件,它具有读取 USB 连接的扫描仪输入的默认焦点。对话框上的所有其他控件都是只读的。但是当用户单击任何控件时,隐藏的编辑控件会失去焦点。我该如何解决这个问题,以便即使在用户单击任意位置的对话框后,这个隐藏的编辑控件也能获得焦点。

4

1 回答 1

1

好吧,MFC 应用程序中的大多数鼠标消息都是张贴而不是发送的。因此,您可以在 CDialog 派生类中覆盖 PreTranslateMessage(MSG*),然后通过返回 TRUE 以防止消息发送或 FALSE 以允许正常处理来吃掉这些消息。

BOOLCMyDlg::PreTranslateMessage(MSG* pMsg)
{
    switch (pMsg->message)
    {
    case WM_LBUTTONDOWN:
    case WM_RBUTTONDOWN:
    ///etc, etc
        {
            // might want other tests
            return TRUE;
        } break;
    }
    return CDialog::PreTranslateMessage(MSG* pMsg);
}
于 2015-09-15T20:43:54.673 回答