zoukankan      html  css  js  c++  java
  • MFC之列表控件

    初始操作

    新建MFC应用程序,项目名为ListCtrl,同样基于对话框。

    删除原有控件,在右侧工具箱中找到List Control。放置到窗口中。

    将方框拖大些,可以看到:

    如果想要更改排布模式,右键,在属性中找到view就可以进行更改,此处不再配图。将view改为report报表模式。

    右键,选择添加变量,访问方式:private,变量名:n_list。

    定位到:类视图--CListCtrlDlg--OnInitDialg()中

    添加代码:

    //列表控件使用
    CString str[] = { TEXT("姓名"), TEXT("性别"), TEXT("年龄")};
    
    for(int i = 0; i < 3; i++)
    {
    	//设置表头
    	n_list.InsertColumn(i, str[i]);
    }
    

    执行程序。

    此时没有出现列表(当然你可以拖拽拉开,使得列表出现)。

    InsertColumn()函数及重载使用

    在手册中查找InsertColumn(),可以看到它的一个重载:

    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,那么没有子项与列相关。

    对代码进行修改:

    //列表控件使用
    CString str[] = { TEXT("姓名"), TEXT("性别"), TEXT("年龄")};
    
    for(int i = 0; i < 3; i++)
    {
    	//设置表头  参数:1.索引 2.内容 3.对齐方式 4.列宽度
    	n_list.InsertColumn(i, str[i], LVCFMT_LEFT, 100);
    }
    
    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
    

    执行:

    在表内插入数据

    //设置正文
    //表头不算正文内容,索引从0开始
    n_list.InsertItem(0, TEXT("张三"));
    //给此item插入其他列数据 0行 1列 插入内容
    n_list.SetItemText(0, 1, TEXT("男"));
    

    执行结果:

    添加更多的数据

    注释掉上面的代码行,然后添加代码:

    int j;
    for(int i = 0; i < 10; i++)
    {
    	j = 0;
    	CString name;
    	name.Format(TEXT("张三_%d"), i);
    	n_list.InsertItem(i, name);
    
    	n_list.SetItemText(i, ++j, TEXT("男"));
    
    	n_list.SetItemText(i, ++j, TEXT("18"));
    }
    

    执行:

    属性设置

    现在的代码执行后,列表中的张三,男之类的项之间没有网格分割,试着去添加网格。
    代码示意图:

    //设置属性:                获取原来的属性            整行选中状态            显示网格
    n_list.SetExtendedStyle(n_list.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
    

    执行:

  • 相关阅读:
    .Net 4.0 之并行运算(Parallel)(For、Foreach)
    【POJ】3494 Largest Submatrix of All 1’s
    【POJ】2676 Sudoku
    【POJ】3250 Bad Hair Day
    【SPOJ】11578 A Famous City
    【POJ】3740 Easy Finding
    【HUST】1017 Exact cover
    【POJ】3074 Sudoku
    【ZOJ】3209 Treasure Map
    【POJ】3076 Sudoku
  • 原文地址:https://www.cnblogs.com/echobiscuit/p/12711422.html
Copyright © 2011-2022 走看看