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

来源:百度知道 编辑:UC知道 时间:2024/06/04 15:04:11
交谈中请勿轻信汇款、中奖消息,勿轻易拨打陌生电话。

木瓜(330988812) 13:56:42
自己构造一个类:GetArea 有成员函数:GetProvinceToListBox()
想在 Viod View::OnInitialUpdate()里面 调用GetProvinceToListBox()就可以将Province表中P_Name字段
依次添加到 组筐IDC_COMBO1中,编译时出现以下错误==》
error C2660: 'GetDlgItem' : function does not take 1 parameters

GetProvinceToListBox()中的代码直接放到Viod View::OnInitialUpdate()里面可以正常实现。

如何修改CString GetArea::GetProvinceToListBox()中的代码才能实现这个功能???
以下是原代码===》

CString GetArea::GetProvinceToListBox()
{
CString SQL;
CString NAME;

SQL.Format("Select * from Province ");
m_pSet.Open(CRecordset::forwardOnly ,SQL,CRecordset::readOnly);

while (!m_pSet.IsEOF())
{
m_pSet.GetFieldValue("P_Name", NAME );
NAME.Format("%s",NAME);

((CComboBox*)GetDlgItem(IDC_COMBO1))->AddString(NAME);
m_pSet.MoveNext();

}

return NAME;
}

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<stuNumChoose[classNum];i++)
{

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

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

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

答案补充:这方