如何正确使用((CComboBox*)GetDlgItem(IDC_COMBO1))->AddString(NAME);??

2024-12-04 22:38:41
推荐回答(2个)
回答1:

GetArea不是继承CWnd的吧,那当然不能只用一个参数了
还得加一个窗口句柄参数,例如HWND hDlg;给hDlg赋值IDC_COMBO1所在窗口的句柄,函数就改成
((CComboBox*)GetDlgItem(hDlg,IDC_COMBO1))
HWND hDlg;//在头文件里申明一个变量
hDlg = ((CComboBox*)GetDlgItem(IDC_COMBO1))->GetSafeHwnd();//在cpp文件里赋值
然后就是两个类之间传递值的问题了。可以在GetProvinceToListBox()函数上加个参数用来传递如GetProvinceToListBox(HWND hDlg);也可以在GetArea类里面定义一个全局变量
在列表框中必须添加新数字序列时, 必须先清除列表框中原有数据,所以必须调用清除原有数据的函数。。。

int classNum=ChooseClass.GetCurSel();
CString studentID;

((CComboBox*)GetDlgItem(IDC_COMBO2))->ResetContent(); // 使用ResetContent()函数清除原有数据

for (int i=1;i {

studentID.Format(_T("%d"),i);
((CComboBox*)GetDlgItem(IDC_COMBO2))->AddString(studentID);
}

修改后,发现列表框中数据有了变化,但是还是达不到想象中的效果。

回答2:

GetArea不是继承CWnd的吧,那当然不能只用一个参数了
还得加一个窗口句柄参数,例如HWND hDlg;给hDlg赋值IDC_COMBO1所在窗口的句柄,函数就改成
((CComboBox*)GetDlgItem(hDlg,IDC_COMBO1))

答案补充:这方法就多了,首先要在窗口类里面
HWND hDlg;//在头文件里申明一个变量
hDlg = ((CComboBox*)GetDlgItem(IDC_COMBO1))->GetSafeHwnd();//在cpp文件里赋值
然后就是两个类之间传递值的问题了。可以在GetProvinceToListBox()函数上加个参数用来传递如GetProvinceToListBox(HWND hDlg);也可以在GetArea类里面定义一个全局变量,这就不用我说了吧。