MFC ComboBox 响应回车键
时间: 2023-10-27 12:07:02 浏览: 213
如果你想让 MFC ComboBox 在用户按下回车键时响应,你可以重载它的 PreTranslateMessage 函数,检测是否有回车键被按下,如果是则发送一个 CBN_CLOSEUP 消息给 ComboBox,这样 ComboBox 就会认为用户选择了一个项目并关闭了下拉列表。
以下是一个示例代码:
```cpp
BOOL CMyDialog::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
{
CWnd* pWnd = GetFocus();
if (pWnd && pWnd->GetDlgCtrlID() == IDC_COMBO_BOX)
{
CComboBox* pComboBox = static_cast<CComboBox*>(pWnd);
pComboBox->SendMessage(CBN_CLOSEUP, 0, 0);
return TRUE;
}
}
return CDialogEx::PreTranslateMessage(pMsg);
}
```
在这个示例中,我们首先检查消息是否是按键消息,并且按下的键是否是回车键。然后,我们检查当前焦点控件是否是我们的 ComboBox,如果是,我们就发送 CBN_CLOSEUP 消息给它,并返回 TRUE 表示我们已经处理了这个消息。如果不是我们的 ComboBox 或者不是回车键,我们就调用基类的 PreTranslateMessage 函数处理这个消息。
阅读全文