如何在MFC中的对话框中阻止鼠标输入
How to block mouse inputs on dialog box in MFC
我有一个基于对话框的 MFC 应用程序。我有一个隐藏的编辑控件,它具有读取 USB 连接的扫描仪输入的默认焦点。对话框中的所有其他控件都是只读的。但是当用户单击任何控件时,隐藏的编辑控件将失去焦点。如何解决这个问题,使这个隐藏的编辑控件即使在用户点击对话框的任何地方后也有焦点。
嗯,MFC 应用程序中的大多数鼠标消息都是发布的,而不是发送的。因此,您可以在派生的 CDialog 中覆盖 PreTranslateMessage(MSG*) class,然后通过返回 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);
}
我有一个基于对话框的 MFC 应用程序。我有一个隐藏的编辑控件,它具有读取 USB 连接的扫描仪输入的默认焦点。对话框中的所有其他控件都是只读的。但是当用户单击任何控件时,隐藏的编辑控件将失去焦点。如何解决这个问题,使这个隐藏的编辑控件即使在用户点击对话框的任何地方后也有焦点。
嗯,MFC 应用程序中的大多数鼠标消息都是发布的,而不是发送的。因此,您可以在派生的 CDialog 中覆盖 PreTranslateMessage(MSG*) class,然后通过返回 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);
}