初始化函数          
     OnInitDlalog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_basic.InsertColumn(0,"姓名");
m_basic.InsertColumn(1,"性别");
m_basic.InsertColumn(2,"职务");
            。。
             RECT rectbasic;
m_basic.GetWindowRect(&rectbasic);
int widbasic = rectbasic.right - rectbasic.left;
m_basic.SetColumnWidth(0,widbasic/8);
m_basic.SetColumnWidth(1,widbasic/8);
       RefreshData();
return TRUE;RefreshData();
return TRUE;

RefreshData()
{
if(!m_database.IsOpen()){
m_database.Open(_T("data"));
}
m_basic.DeleteAllItems();
CPersonSet m_basicset(&m_database);
CString strSQL;
m_basicset.Open(AFX_DB_USE_DEFAULT_TYPE,p_query);
CDBVariant varValue;
if(m_basicset.GetRecordCount()!=0) m_basicset.MoveFirst();
char buf[100];
int i=0;
while(!m_basicset.IsEOF())
{
int temp=0;
m_basicset.GetFieldValue(temp,varValue);
m_basic.SetItemText(i,temp,varValue.m_pstring->GetBuffer(1));
m_basicset.GetFieldValue(1,varValue);
m_basic.SetItemText(i,1,varValue.m_pstring->GetBuffer(1));
m_basicset.GetFieldValue(2,varValue);
m_basic.SetItemText(i,2,varValue.m_pstring->GetBuffer(1));
m_basicset.GetFieldValue(3,varValue);

m_basicset.MoveNext();
i++;
}
在一个对话框上放了个control list 控件,可是运行显示一块白

解决方案 »

  1.   

    m_basic.GetWindowRect(&rectbasic);
    int widbasic = rectbasic.right - rectbasic.left;//保证数据不为0在RefreshData()之后加Updatedata(FALSE);还有设置控件属性Report
      

  2.   

    在SetItemText前,要先 i = InsertItem(...) ; 
    再 m_basic.SetItemText(i,temp,varValue.m_pstring->GetBuffer(1));
      

  3.   

    在RefreshData()里m_basic.DeleteAllItems()后要调用m_basic.SetRedraw(FALSE);
    你试试,这个东西我以前好像也碰到过,不知道是不是这么搞定的,时间长了记不住了