按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
typedef struct tagLV_DISPINFO {
NMHDR hdr;
LV_ITEM item;
}LV_DISPINFO;
//LV_KEYDOWN 结构;该结构包含一些与键盘有关的信息,其定义为
typedef struct tagLV_KEYDOWN {
NMHDR hdr;
WORD wVKey; //虚拟键盘码
UINT flags; //总为 0
} LV_KEYDOWN;
MFC 的 CListCtrl 类封装了列表视图控件。该类的 Create 函数负责创建控件,函数的声
明为:
BOOL Create(DWORD dwStyle;const RECT& rect; CWnd* pParentWnd;UINT nID );
其中参数 dwStyle 是如表 5…20 所示的控件风格的组合。
表 5…20 列表视图的风格
风格 含义
显示格式是大图标或小图标时,标题放在图标的左边。默认情况下标题
LVS_ALIGNLEFT
放在图标的下面
LVS_ALIGNTOP 当显示格式是大图标或小图标时,标题放在图标的上边
LVS_AUTOARRANGE 当显示格式是大图标或小图标时,自动排列控件中的表项
LVS_EDITLABELS 用户可以修改标题
LVS_ICON 指定大图标显示格式
LVS_LIST 指定列表显示格式
LVS_NOCOLUMNHEADER 在报告格式中不显示列的表头
·132 ·
…………………………………………………………Page 142……………………………………………………………
第 5 章 常用控件
续表
风格 含义
LVS_NOLABELWRAP 当显示格式是大图标时,使标题单行显示。默认时是多行显示
LVS_NOSCROLL 列表视图无滚动条
LVS_NOSORTHEADER 报告列表视图的表头不能作为排序按钮使用
LVS_OWNERDRAWFIXED 由控件的拥有者负责绘制表项
LVS_REPORT 指定报告显示格式
LVS_SHAREIMAGELISTS 使列表视图共享图像序列
LVS_SHOWSELALWAYS 即使控件失去输入焦点,仍显示出项的选择状态
LVS_SINGLESEL 指定一个单选择列表视图。默认时可以多项选择
LVS_SMALLICON 指定小图标显示格式
LVS_SORTASCENDING 按升序排列表项
LVS_SORTDESCENDING 按降序排列表项
除上表的风格外,一般还要指定 WS_CHILD 和 WS_VISIBLE 窗口风格。风格组合
WS_CHILD|WS_VISIBLE|LVS_REPORT|LVS_AUTOARRANGE|LVS_EDITLABLES 将 指 定
一个自动排列的、可编辑标题的、单选择报告式列表视图控件。要指定大图标、小图标或列
表式的列表视图控件,则应该把 LVS_REPORT 换成 LVS_ICON 、LVS_SMALLICON 或
LVS_LIST 。
对于用对话框模板创建的列表视图控件,可以在控件的属性对话框中指定上表中列出的
控件风格。例如,在属性对话框的 Styles 页的 View 栏中选择 Icon ,相当于指定了 LVS_ICON
风格。
5。8。3 ClistCtrl 类的主要成员函数
CListCtrl 类提供了大量的成员函数。在这里结合实际应用来介绍一些常用的函数。
1.InsertColumn()函数
在以报告格式显示列表视图时,一般会显示一列表项和多列子项。在初始化列表视图时,
先要调用 InsertColumn 插入各个列,该函数的声明如下:
int InsertColumn(int nCol;const LV_COLUMN* pColumn);
其中参数 nCol 是新列的索引,参数 pColumn 指向一个 LV_COLUMN 结构,函数根据该
结构来创建新的列。若插入成功,函数返回新列的索引,否则返回…1 。
2 .DeleteColumn() 函数
要删除某列,应调用 DeleteColumn() 函数,其声明如下:
BOOL DeleteColumn(int nCol);
3 .InsertItem()函数
要插入新的表项,应调用 InsertItem() 函数。如果要显示图标,则应该先创建一个
CImageList 对象并使该对象包含用作显示图标的位图序列。然后调用 SetImageList 来为列表
视图设置位图序列。函数的声明为
int InsertItem(const LV_ITEM* pItem);
·133 ·
…………………………………………………………Page 143……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
参数 pItem 指向一个 LV_ITEM 结构,该结构提供了对表项的描述。若插入成功则函数
返回新表项的索引,否则返回…1 。
4 .SetImageList()函数
该成员函数声明如下:
CImageList* SetImageList(CImageList* pImageList;int nImageList);
参数 pImageList 指向一个 CImageList 对象,参数 nImageList 用来指定图标的类型,若其
值为 LVSIL_NORMAL ,则位图序列用作显示大图标;若值为 LVSIL_SMALL ,则位图序列
用作显示小图标。可用该函数同时指定一套大图标和一套小图标。
5 .DeleteItem() 函数
要删除某表项,应调用 DeleteItem() 函数,要删除所有的项,应调用 DeleteAllItems() 函数。
一旦表项被删除,其子项也被删除。该函数的声明如下:
BOOL DeleteItem(int nItem );
BOOL DeleteAllItems();
6 .GetItemText()和 SetItemText()函数
调用 GetItemText()和 SetItemText()函数来查询和设置表项及子项显示的正文。SetItemText
的一个重要用途是对子项进行初始化。该函数的声明如下:
int GetItemText(int nItem;int nSubItem; LPTSTR lpszText; int nLen) const;
CString GetItemText(int nItem; int nSubItem) const;
BOOL SetItemText(int nItem;int nSubItem;LPTSTR lpszText);
其中参数 nItem 是表项的索引(行索引),nSubItem 是子项的索引(列索引),若 nSubItem
为 0 则说明函数是针对表项的。参数 lpszText 指向正文缓冲区,参数 nLen 说明了缓冲区的大
小。第二个版本的 GetItemText 返回一个含有项的正文的 Cstring 对象。
7 .GetItem()和 SetItem()函数
调用 GetItem()和 SetItem()函数来查询和设置指定项的属性。用这两个函数几乎可以查询
和设置指定项的所有属性,包括正文、图标及选择状态。该函数的声明如下:
BOOL GetItem(LV_ITEM* pItem) const;
BOOL SetItem(const LV_ITEM* pItem);
参数 pItem 是指向 LV_ITEM 结构的指针,函数是通过该结构来查询或设置指定项的,
在调用函数前应该使该结构的 iItem 或 iSubItem 成员有效以指定表项或子项。CListCtrl 还提
供了一系列函数完成 GetItem()和 SetItem() 的功能,其中 GetItemState() 、GetItemText()和
GetItemData()函数用于查询,SetItemState()、SetItemTex()t 和 SetItemData()函数用于设置。
8.GetNextItem()函数