如何正确使用((CComboBox*)GetDlgItem(IDC_COMBO1))->AddString(NAME);?? 15
交谈中请勿轻信汇款、中奖消息,勿轻易拨打陌生电话。木瓜(330988812)13:56:42自己构造一个类:GetArea有成员函数:GetProvinceToListB...
交谈中请勿轻信汇款、中奖消息,勿轻易拨打陌生电话。
木瓜(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没有继承,是一个独立的类。我知道GetDlgItem()需要两个参数,一个是窗口句柄,另一个是资源ID,但这个句柄这样在一个独立的类中如何通过这个资源ID号得到相应的窗口句柄呢? 展开
木瓜(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没有继承,是一个独立的类。我知道GetDlgItem()需要两个参数,一个是窗口句柄,另一个是资源ID,但这个句柄这样在一个独立的类中如何通过这个资源ID号得到相应的窗口句柄呢? 展开
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类里面定义一个全局变量
在列表框中必须添加新数字序列时, 必须先清除列表框中原有数据,所以必须调用清除原有数据的函数。。。
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);
}
修改后,发现列表框中数据有了变化,但是还是达不到想象中的效果。
还得加一个窗口句柄参数,例如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))
答案补充:这方法就多了,首先要在窗口类里面
HWND hDlg;//在头文件里申明一个变量
hDlg = ((CComboBox*)GetDlgItem(IDC_COMBO1))->GetSafeHwnd();//在cpp文件里赋值
然后就是两个类之间传递值的问题了。可以在GetProvinceToListBox()函数上加个参数用来传递如GetProvinceToListBox(HWND hDlg);也可以在GetArea类里面定义一个全局变量,这就不用我说了吧。
还得加一个窗口句柄参数,例如HWND hDlg;给hDlg赋值IDC_COMBO1所在窗口的句柄,函数就改成
((CComboBox*)GetDlgItem(hDlg,IDC_COMBO1))
答案补充:这方法就多了,首先要在窗口类里面
HWND hDlg;//在头文件里申明一个变量
hDlg = ((CComboBox*)GetDlgItem(IDC_COMBO1))->GetSafeHwnd();//在cpp文件里赋值
然后就是两个类之间传递值的问题了。可以在GetProvinceToListBox()函数上加个参数用来传递如GetProvinceToListBox(HWND hDlg);也可以在GetArea类里面定义一个全局变量,这就不用我说了吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询