列表控件可以看作是功能增强的ListBox,它提供了四种风格,而且可以同时显示一列的多中属性值。
MFC中使用CListCtrl类来封装列表控件的各种操作。
通过调用BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );创建一个窗口,dwStyle中可以使用以下一些列表控件的专用风格:
LVS_ICON LVS_SMALLICON LVS_LIST LVS_REPORT 这四种风格决定控件的外观,同时只可以选择其中一种,分别对应:大图标显示,小图标显示,列表显示,详细报表显示
LVS_EDITLABELS 结点的显示字符可以被编辑,对于报表风格来讲可编辑的只为第一列。
LVS_SHOWSELALWAYS 在失去焦点时也显示当前选中的结点
LVS_SINGLESEL 同时只能选中列表中一项
为了演示,我新建一个工程
打开,文件,新建
选择MFC APP,工程名字任选,但是必须是英文,文件位置自选
点下一步,选择基于对话框的模式,直接点完成
点击列表控件,然后在对话框里画一下范围,即可画出列表控件
右键点列表控件,点属性
在常规里,修改一下控件ID,可以自己命名
在样式标签里选择报告模式,其他默认
按ctrl+w 键,呼出类向导,选择CTestDlg,这是建工程时候的名字,自己命名的,未必和我一样,选择Member Variable标签
点一下IDC_LIST_INFO,也是自己命名的,可能和我的不一样,点击Add Variable
自己起个名字,m_XXX,如图
点击OK
点击Message Map 选项卡,首先选择cTestDlg ,图1
在Message 列表里选择INITDIALOG
之后点击右侧Edit code
程序会自动定位到代码位置,
在代码最后一个 } 号上面写入代码
m_listAll.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
m_listAll.InsertColumn(0,"序号",LVCFMT_CENTER);
m_listAll.InsertColumn(1,"列名1",LVCFMT_CENTER);
m_listAll.InsertColumn(2,"列名2",LVCFMT_CENTER);
m_listAll.InsertColumn(3,"列名3",LVCFMT_CENTER);
m_listAll.SetColumnWidth(0,50);
m_listAll.SetColumnWidth(1,80);
m_listAll.SetColumnWidth(2,85);
m_listAll.SetColumnWidth(3,90);
如图:
这样就完成了初始化,点击红色的叹号,编译并允许一下,如图:
下一节讲如何插入数据。