我正在尝试在我的应用程序中获取 2 个复选框以充当单选按钮。IE - 当勾选一个按钮时,另一个按钮将自行取消勾选。我不相信这可以通过属性菜单实现,所以我正在尝试在代码中做到这一点。
我根本不知道如何做到这一点,所以我有点迷茫。这是我到目前为止所拥有的(不起作用(
case BN_CLICKED:
if(BN_CLICKED == IDC_CHECK_MW){
SendMessage(GetDlgItem(hDlg,IDC_CHECK_MW), BM_GETCHECK, (WPARAM)0 ,(LPARAM)0) == BST_CHECKED;
}
我可能很糟糕,但任何帮助都会很棒!
如果您有
手柄或方便的东西,只需发送BM_SETCHECK
:
int checkState = SendMessage (otherHwnd, BM_GETCHECK, 0, 0);
SendMessage (otherHwnd, BM_SETCHECK, checkState == BST_CHECKED ? BST_UNCHECKED : BST_CHECKED, 0);
这当然假设它只能被选中或取消选中,不能处于中间状态。我也会重新考虑你的想法,因为复选框就是这样行动的,而单选按钮是这种行为的正确工具。
此外,在您的消息开关中,您可能希望:
case WM_COMMAND:
{
if (HIWORD (wParam) == BN_CLICKED)
{
switch (LOWORD (wParam))
{
case IDC_CHECK_MW:
//check this, uncheck that
break;
case IDC_OTHER_CHECK:
//check other, uncheck first
break;
default:
//something went wrong
}
}
}