我有以下

void AggiungiEsameDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_COMBO1, ComboBoxVoti);
CString a;
for (int i = 18; i <= 30; i++)
{
    a.Format(_T("%d"), i);
    ComboBoxVoti.AddString(a);
}


DDX_Text(pDX, IDC_EDIT1,nome);

DDX_CBIndex(pDX, IDC_COMBO1, voto);

}


带有CComboBox类型的ComboBoxVoti和类的成员。

如果我调用ComboBoxVoti.GetCurSel我有确切的索引(0代表18,1代表19,依此类推),但是在voto中(由DDX_CBIndex链接)我有1代表18、3代表19、5代表20、7代表21等上!!
为什么?

最佳答案

正如Igor所写,永远不要在每次调用OnInitDialog时添加项目。

如果(!pDX-> m_bSaveAndValidate)**,则可以使用**进行保护。

并且,在向其中插入项目之前,应清除组合框,以将其重置为唯一的初始状态。

08-28 02:24