我有一组带有一组单选按钮的COM控件,它与一个整数变量相关联,用于标识选中的单选按钮。
此关联变量通过DoPropExchange()保存/加载,因此,向后兼容性是必须的,即旧版本保存的已检查单选按钮应该能够转移到较新版本,即使在较新版本中也是如此,单选按钮的Tab键顺序已更改。
但是在我向组中添加了其他单选按钮并更改了Tab键顺序后,当我尝试加载此控件的旧版本时,没有选中单选按钮!我在调试模式下运行它,发现相关的整数已正确加载。
提前致谢! 詹姆斯
答案 0 :(得分:3)
正如您所提到的,按钮适用于正确的组和标签顺序。但是,在任何时候,每个按钮仍然是一个窗口,BM_SETCHECK
适用,CButton::SetCheck
是MFC包装器。
您可以通过Invidually更新按钮检查状态,尤其是处理来自所有单选按钮的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);