void C选号器2Dlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 if (w != 7) { MessageBox(_T("必须选择七位"), _T("提示"), MB_OK); } else { // 定义复选框控件ID数组 UINT checkboxIds[] = { IDC_CHECK1, IDC_CHECK2, IDC_CHECK3,IDC_CHECK4,IDC_CHECK5,IDC_CHECK6, IDC_CHECK7 ,IDC_CHECK8,IDC_CHECK9,IDC_CHECK10,IDC_CHECK11,IDC_CHECK12, IDC_CHECK13,IDC_CHECK14,IDC_CHECK15,IDC_CHECK16,IDC_CHECK17,IDC_CHECK18, IDC_CHECK8,IDC_CHECK19,IDC_CHECK20,IDC_CHECK21,IDC_CHECK22,IDC_CHECK23,IDC_CHECK24, IDC_CHECK26,IDC_CHECK27,IDC_CHECK28,IDC_CHECK29,IDC_CHECK30, IDC_CHECK31,IDC_CHECK32,IDC_CHECK33,IDC_CHECK34,IDC_CHECK35,IDC_CHECK36 }; // 遍历复选框控件,获取其引用并进行操作 for (int i = 0; i < sizeof(checkboxIds) / sizeof(UINT); i++) { CButton* pCheckBox = (CButton*)GetDlgItem(checkboxIds[i]); if (pCheckBox->GetCheck() == BST_CHECKED) { // 复选框已选中,执行相应操作 y[o] = i + 1; o++; } // 关闭当前 Dialog OnOK(); // 加载 Dialog CDialog dlg; dlg.Create(IDD_DIALOG1); // 打开 Dialog dlg.DoModal(); } }这段代码有错误吗
时间: 2024-03-18 17:42:00 浏览: 112
这段代码中有一些问题:
1. 在 `for` 循环中,`OnOK()` 和 `dlg.Create(IDD_DIALOG1)` 应该放在 `for` 循环外面,否则会在循环的每一次迭代中都执行一次,导致错误。
2. `IDD_DIALOG1` 是一个 Dialog 的资源 ID,这个 ID 需要在资源文件中定义,否则会导致运行时错误。需要确认在资源文件中存在对应的 Dialog 资源。
下面是修改后的代码:
```
void C选号器2Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
if (w != 7)
{
MessageBox(_T("必须选择七位"), _T("提示"), MB_OK);
}
else
{
// 定义复选框控件ID数组
UINT checkboxIds[] = { IDC_CHECK1, IDC_CHECK2, IDC_CHECK3,IDC_CHECK4,IDC_CHECK5,IDC_CHECK6,
IDC_CHECK7 ,IDC_CHECK8,IDC_CHECK9,IDC_CHECK10,IDC_CHECK11,IDC_CHECK12,
IDC_CHECK13,IDC_CHECK14,IDC_CHECK15,IDC_CHECK16,IDC_CHECK17,IDC_CHECK18,
IDC_CHECK8,IDC_CHECK19,IDC_CHECK20,IDC_CHECK21,IDC_CHECK22,IDC_CHECK23,IDC_CHECK24,
IDC_CHECK26,IDC_CHECK27,IDC_CHECK28,IDC_CHECK29,IDC_CHECK30,
IDC_CHECK31,IDC_CHECK32,IDC_CHECK33,IDC_CHECK34,IDC_CHECK35,IDC_CHECK36 };
// 遍历复选框控件,获取其引用并进行操作
for (int i = 0; i < sizeof(checkboxIds) / sizeof(UINT); i++) {
CButton* pCheckBox = (CButton*)GetDlgItem(checkboxIds[i]);
if (pCheckBox->GetCheck() == BST_CHECKED) {
// 复选框已选中,执行相应操作
y[o] = i + 1;
o++;
}
}
// 关闭当前 Dialog
OnOK();
// 加载 Dialog
CDialog dlg;
dlg.Create(IDD_DIALOG1);
// 打开 Dialog
dlg.DoModal();
}
}
```
这样修改后,代码应该就可以正常运行了。
阅读全文