1

我有这个带有一组单选按钮的 COM 控件,这些单选按钮与一个整数变量相关联,以识别选中的单选按钮。

这个关联的变量是通过 DoPropExchange() 保存/加载的,因此,向后兼容是必须的,即旧版本保存的选中单选按钮应该能够转移到较新版本,即使在较新版本中,选项卡单选按钮的顺序已更改。

但是在我向组中添加了额外的单选按钮并更改了选项卡顺序后,当我尝试加载此控件的旧版本时,没有选中单选按钮!我在调试模式下运行它,发现关联的整数已正确加载。

提前致谢!詹姆士

4

1 回答 1

3

正如您所提到的,这些按钮与正确的组和选项卡顺序配合得很好。然而在任何时候每个按钮仍然是一个窗口,BM_SETCHECK适用的,CButton::SetCheck是MFC wrapper。

您可以单独更新按钮检查状态,尤其是。处理BN_CLICKED来自所有单选按钮的通知并分别更新所有其他单选按钮的检查状态。

您可能需要正确检查按钮:

INT m_nIndex;
// ...
// (there a power from above loads nIndex from persistent storage)
// ...
CButton* pButton1 = (CButton*) GetDlgItem(IDC_RADIO1);
CButton* pButton2 = (CButton*) GetDlgItem(IDC_RADIO2);
CButton* pButton3 = (CButton*) GetDlgItem(IDC_RADIO3);
pButton1->SetCheck(m_nIndex == 0);
pButton1->SetCheck(m_nIndex == 1);
pButton1->SetCheck(m_nIndex == 2);
于 2012-08-27T05:18:15.637 回答