两个均为MFC提供的标准控件封装,但功用差别较大。
1、CListBox封装了列表框控件,用于列出一系列表项,可供单选、多选、扩展多选或不选。一个常见样式如左图所示。
2、CListCtrl封装了列表控件,用于以多种格式显示一组信息,有大图标格式、小图标格式,列表格式和报表格式。Windows资源管理器主界面就是一种列表控件样式,如右图所示。(当然,不一定是CListCtrl哟!)
你用错了控件, 这样做起来会出现很多问题,就算你现在解决了,以后也会出现新的问题。
用list control吧, 用法如下:
void CFindStuInfoDlg::OnInitList() //初始化list control控件列
{
m_listInsertColumn(0,"编号",LVCFMT_CENTER,90,-1);
m_listInsertColumn(1,"姓名",LVCFMT_CENTER,80,-1);
m_listInsertColumn(2,"性别",LVCFMT_CENTER,50,-1);
m_listInsertColumn(3,"导师",LVCFMT_CENTER,60,-1);
m_listInsertColumn(4,"入学年",LVCFMT_CENTER,60,-1);
m_listInsertColumn(5,"出生年",LVCFMT_CENTER,60,-1);
m_listInsertColumn(6,"专业",LVCFMT_CENTER,100,-1);
m_listInsertColumn(7,"籍贯",LVCFMT_CENTER,120,-1);
m_listSetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);//当选中某行时全选
}
void CFindStuInfoDlg::DisplayInfo() //显示list control控件信息
{
CString number,name,sex,tutor,comeYear,stuYear,specialty,place;
int index=0;
while(!m_rec->adoEOF) //从数据库中读取数据显示到控件上
{
number=(char)(_bstr_t)m_rec->GetCollect("stuID");
m_listInsertItem(index,number);
name=(char)(_bstr_t)m_rec->GetCollect("stuName");
m_listSetItemText(index,1,name);
sex=(char)(_bstr_t)m_rec->GetCollect("stuSex");
m_listSetItemText(index,2,sex);
tutor=(char)(_bstr_t)m_rec->GetCollect("teaID");
m_listSetItemText(index,3,tutor);
comeYear=(char)(_bstr_t)m_rec->GetCollect("comeYear");
m_listSetItemText(index,4,comeYear);
stuYear=(char)(_bstr_t)m_rec->GetCollect("stuYear");
m_listSetItemText(index,5,stuYear);
specialty=(char)(_bstr_t)m_rec->GetCollect("specialty");
m_listSetItemText(index,6,specialty);
place=(char)(_bstr_t)m_rec->GetCollect("comeFrom");
m_listSetItemText(index,7,place);
m_rec->MoveNext(); //下一记录
index++;
}
m_nCount=m_listGetItemCount(); //获取控件上的记录数并显示
UpdateData(false);
}
DDX_Control当然是加在DoDataExchange里面。
不过这个强烈不建议手工添加(尤其是初学者),其中有不少的关联关系,建议通过ClassWizard向导等编辑器提供的方式添加。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)