在DLG中有一个ComboBox,其中的值从数据库的一个表中读取。
void CMyDAOView::OnSubjectAdd() 
{
m_strTableName=_T("科目列表");
if(!m_pDatabase->IsOpen ()) return;
if(!m_pRecordset) return;
if(m_pRecordset->IsOpen ()) m_pRecordset->Close ();
CString strSelect;
CSubjectAdd SubjectDlg;
try
{
strSelect=_T("Select 科目ID,科目名称 From [");
strSelect+=m_strTableName;
strSelect+=_T("]");
m_pRecordset->Open (dbOpenDynaset,strSelect);
while(!m_pRecordset->IsEOF ())
{
COleVariant var;
var=m_pRecordset->GetFieldValue (0);
SubjectDlg.m_uaSubject .Add (var.iVal );
var=m_pRecordset->GetFieldValue (1);
SubjectDlg.m_saSubject .Add (CCrack::strVARIANT (var));
m_pRecordset->MoveNext ();
}
m_pRecordset->Close (); }
catch(CDaoException *e)
{
e->ReportError ();
e->Delete ();
return;
}
if(IDOK!=SubjectDlg.DoModal ())
return;
...在Dlg的cpp中有:
BOOL CSubjectAdd::OnInitDialog() 
{
CDialog::OnInitDialog();

// TODO: Add extra initialization here
int nSubjectNum=m_saSubject.GetSize ();
for(int i=0;i<nSubjectNum;i++)
{
int nIndex=m_CBSubject.AddString (m_saSubject.GetAt (i));
m_CBSubject.SetItemData (nIndex,m_uaSubject.GetAt(i));
}
return TRUE;                 
}很奇怪,编译通过,但ComboBox中是空的。哪儿的原因,我觉得是COleVariant var这几句有问题。

解决方案 »

  1.   

    检查一下在对话框上ComboBox控件有没拉长,方法是鼠标点击控件的箭头,然后把框拉的足够长
      

  2.   

    你的ComboBox控件高度不够,方法同楼上。
      

  3.   

    好像真是这个问题,现在好了。
    可是ComboBox中出现的都是问号,这是我程序的问题了。
    顺便问一下,属性Type中有Dropdown,DropList,Simple什么意思?用不用改动?