CListCtrl用法.doc
文本预览下载声明
在系统中,经常会用到ListCtrl来对数据进行显示,那么在系统中,对ListCtrl的使用主要是两个函数进行使用。结合主界面对ListCtrl的用法进行一下介绍:
第一步,从控件列表栏里面,拖动一个ListCtrl在主界面上:
第二步,修改ListCtrl的样式
第三步,修改ListCtrl的资源ID
第四步,为ListCtrl绑定一个变量。右键点击ListCtrl控件,然后选择“建立类向导”,
按下图进行设置
第五步,添加设置ListCtrl表头的函数。在类视图中右键点击“CAMSDlg”类,然后选择“”,弹出“添加成员函数”界面,输入函数类型及函数描述,选择可见域为“Private”,如下图所示,并点击“确定”
第六步,在InitListCtrlStyle函数中添加如下代码,设置ListCtrl的列头及样式:
int CAMSDlg::InitListCtrlStyle()
{
//获取ListCtrl的宽度
CRect rect;
m_listActiveCards.GetClientRect(rect);
int nColInterval = rect.Width();
//设置ListCtrl的样式
m_listActiveCards.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT );
//插入列索引、列名、列的文字格式,列宽
m_listActiveCards.InsertColumn(0, _T(卡号), LVCFMT_RIGHT, int(nColInterval*0.1));
m_listActiveCards.InsertColumn(1, _T(卡类别), LVCFMT_LEFT, int(nColInterval*0.1));
m_listActiveCards.InsertColumn(2, _T(上机状态), LVCFMT_LEFT, int(nColInterval*0.1));
m_listActiveCards.InsertColumn(3, _T(上次下机时间), LVCFMT_LEFT, int(nColInterval*0.3));
m_listActiveCards.InsertColumn(4, _T(当前余额), LVCFMT_LEFT, int(nColInterval*0.15));
m_listActiveCards.InsertColumn(5, _T(备注), LVCFMT_LEFT, int(nColInterval*0.25));
return 0;
}
第七步,添加ListCtrl的绑定数据的函数RefreshListCtrlData()。在函数里面做如下操作,首先获取ListCtrl的记录行数n,然后在第n行依次往各列插入数据。代码如下:
int CAMSDlg::RefreshListCtrlData()
{
//插入十条模拟数据
for (int i = 0; i 10 ; i++)
{
//根据i来生成卡号
CString strCardID;
strCardID.Format(Card_%d, i);
//获取ListCtrl的当前记录条数iItemCount
int iItemCount = m_listActiveCards.GetItemCount();
m_listActiveCards.InsertItem(iItemCount,);
//往第iItemCount插入第一列的数据数据,即插入卡号
m_listActiveCards.SetItemText(iItemCount,0, strCardID);
//往第iItemCount插入第二列的数据数据,即插入卡类型
CString strType = (i%2 == 0 ? 普通卡:特殊卡);
m_listActiveCards.SetItemText(iItemCount,1, strType);
//往第iItemCount插入第三列的数据数据,即插入卡状态
m_listActiveCards.SetItemText(iItemCount,2, 未使用);
//获取当前时间
CTime tTime = CTime::GetCurrentTime();
CString strTemp = tTime.Format(%Y-%m-%d %H:%M:%S);
//往第iItemCount插入第四列的数据数据,即插入卡的上机时间
m_listActiveCards.
显示全部