List Control控件的用法(详细步骤和解释)

创建列表

  • 点击工具箱中的List Control ,拖到对话框中
  • 修改列表属性:
    • 将控件(一般ID为IDC_LIST1)的View的属性改为改为Report,一般默认为ICON。
  • 添加变量:
    • 右击列表,选择 添加变量。变量类型(CListCtrl),变量名可以自己设定,此处假设为m_ListCtrl,点击确定。

添加每一列的名称

在对话框对应的类CListCtrlDlg中的OnInitDialog(void)中的CDialog::OnInitDialog();后便可以添加代码如下:

m_ListCtrl.InsertColumn(0, _T("姓名"), LVCFMT_LEFT, 60-1);
  • 结果:
    List Control控件的用法(详细步骤和解释)_第1张图片
CListCtrl::InsertColumn
int InsertColumn(int nCol,const LVCOLUMN* pColumn)
int InsertColumn(int nCol,
                 LPCTSTR lpszColumnHeading,
                 int nFormat = LVCFMT_LEFT,
                 int nWidth = -1,
                 int nSubItem = -1
                )
//返回值:如果成功,则返回新建列的索引值,否则为-1。

//nCol   新建列的索引值。
//pColumn  包含新建列属性的LVCOLUMN结构的地址。
//lpszcolumnHeading  包含列标题的字符串的地址。
//nFormat 指定列对齐方式的整数。它为下列值之一:LVCFMT_LEFT,LVCFMT_RIGHT或LVCFMT_CENTER。
//nWidth 以像素为单位的列宽。如果该参数为-1,那么没有设置列宽。
//nSubItem  与列相关联的子项的索引。如果该参数为-1,那么没有子项与列相关。

添加数据

首先要知道List Control在显示为Report样式时,主项为第一项,后面紧跟着的为子项。主项和子项的数据写入不同,在我们的例子当中姓名就是主项了,而其余的项就都是子项了。

m_ListCtrl.InsertItem(0,_T("王二小"));
int InsertItem(const LVITEM* pItem)
int InsertItem(int nItem,LPCTSTR lpszItem)
int InsertItem(int nItem, LPCTSTR lpszItem,int nImage)
int InsertItem(UINT nMask,
               int nItem,
               LPCTSTR lpszItem,
               UINT nState,
               UINT nStateMask,
               int nImage,
               LPARAM lParam
              )
参数 解释
pItem 指向指定项属性LVITEM结构的指针,如联机文档“平台SDK”中所述
nItem 被插入项的索引值
lpszItem 包含项标签的字符串的地址,或当项为回调项时,该变量为LPSTR_TEXT CALLBACK。要了解更多有关回调项的信息,请参阅CListCtrl::GetCall backMask.
nImage 项图象的索引值,或当项为回调项时,该变量为I_IMAGECALLBACK。要了解更多有关回调项的信息,请参阅CListCtrl::GetCallbackMask
nMask 参数nMask指定了哪个项属性作为参数传递是有效的。它可以是联机文档“平台SDK” 中LVITEM结构所描述的一个或多个掩码值。有效的数据能够通过位与运算来组合。
nState 指示项的状态、状态图象及轮廓图象。请参阅联机文档“平台SDK”中的LVITEM来获取更多信息,并参阅有效标志列表中的列表视图项状态。
nStateMask 指示状态成员中的哪一位将被获取或修改。请参阅联机文档“平台SDK”中的LVITEM来获取更多信息。
nImage 图象列表之内项的图象的索引。
lParam 与项相关联的应用指定的32位值。如果该参数被指定,那么必须设置nMask的属性为LVIF_PARAM。

很显然,我们采用的是第二个函数,具有三个参数的函数。
我们这行代码的作用就是,插入主项:王二小,即在第一行第一列姓名中添加了王二小。
那我们要如何插入子项呢?我们继续添加代码如下:

m_ListCtrl.SetItemText(0,1,_T("男"));

函数原型

BOOL SetItemText(int nItem,int nSubItem,LPTSTR lpszText)
//返回值:如果成功,则返回非零值,否则为0。
参数 解释
nItem 要设定文本项的索引值。
nSubItem 子项的索引,若为零,则设置项标签。
lpszText 指向包含新项文本字符串的指针。

说明:改变列表视图项或子项的文本。
一步一步学List Control控件的用法(第一步)----创建第一列
一步一步学List Control控件的用法(第二步)----创建第一行
一步一步学List Control控件的用法(第三步)----设置风格

你可能感兴趣的:(编程语言,MFC,MFC,ListControl)