我是WinAPI的初学者,并尝试修改其他人的代码,使一对独立的复选框在以前是非独占的。
我最初的尝试是如果检查了一个,则立即取消选中另一个,但这显然只能在一个方向上起作用。如果检查了IDC_2并且我尝试检查IDC_1,它会再次触发第一个'if'语句,但它会失败。
这是我的代码:
static WDL_DLGRET dlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (IsDlgButtonChecked(hwndDlg, IDC_1)) {
// do something
// try to make exclusive
CheckDlgButton(hwndDlg, IDC_2, BST_UNCHECKED);
}
if (IsDlgButtonChecked(hwndDlg, IDC_2)) {
// do something
// try to make exclusive
CheckDlgButton(hwndDlg, IDC_1, BST_UNCHECKED);
}
}
我知道单选按钮,但在这种情况下,选择也可以是非互斥的。可以检查两个盒子中的非盒子(但不能同时检查两个盒子),所以我认为单选按钮在这里不是正确的选择,或者?
答案 0 :(得分:1)
你有两个立即出现的解决方案
采取选择1.最不可取的原则。颠覆常见的(众所周知的和功能上可接受的)用户界面是一个坏主意。
如果这是稍后验证输入的设置,则可以保留复选框,例如在您随后提交的对话框或表单中,但您需要添加以下行的说明:
选择下面的一个选项 然后执行验证,拒绝接受,直到选择最多一个。
选择选项1。