【发布时间】:2019-10-21 05:39:25
【问题描述】:
我使用 Visual Studio 2019 模板创建了一个 Windows 桌面应用程序。我添加了包含两个单选按钮 (BS_AUTORADIOBUTTON) 的无模式对话框。当我使用鼠标选择单选按钮时,我会收到一个单选按钮事件,但是当我使用箭头键(向上/向下)在单选按钮之间切换时,我会收到两次单选按钮事件。为什么 ?它是如何工作的 ?主消息循环如下所示:
while (GetMessage(&msg, nullptr, 0, 0))
{
if (!IsDialogMessage(dialogBoxHandle, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
这里是无模式对话框事件过程:
INT_PTR CALLBACK MyProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_COMMAND:
switch(LOWORD(wParam))
{
case ID_RADIOBUTTON1:
{
std::cout << "ID_RADIOBUTTON1" << std::endl;
return (INT_PTR)TRUE;
}
case ID_RADIOBUTTON2:
{
std::cout << "ID_RADIOBUTTON2" << std::endl;
return (INT_PTR)TRUE;
}
}
break;
}
return (INT_PTR)FALSE;
}
【问题讨论】: