友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
一世书城 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

VC语言6.0程序设计从入门到精通-第40章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




含的 NMHDR 结构。另外,在函数返回时,ClassWizard  自动将处理结果赋 0 值。  

     可以利用 ON_NOTIFY_RANGE 宏把多个 ID 连续的控件发出的相同消息映射到同一个 

处理函数上,具体形式如下:    



    ON_NOTIFY_RANGE(wNotifyCode; id; idLast; memberFxn)  



     其中参数 id 和 idLast 分别说明明了一组连续的控件 ID 中的头一个和最后一个 ID 。  

     相应的消息处理函数应按下面的形式声明:    



    afx_msg void memberFxn(UINT id; NMHDR* pNotifyStruct;LRESULT * result);  



     与普通的 WM_NOTIFY 消息处理函数相比,该函数多了一个参数 id 用来说明发送通知 

消息的控件 ID 。  

    ClassWizard 不支持 ON_NOTIFY_RANGE 宏,所以需要手工建立消息映射和消息处理函 

数。  



5。8。2    列表控件的使用  



     列表控件用来成列地显示数据。列表视图的表项通常包括图标(Icon )和标题(Label ) 



                                                                                 ·129 ·  


…………………………………………………………Page 139……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



两部分,它们分别提供了对数据的形象和抽象描述。列表视图控件是对传统的列表框的重大 

改进,它能够以下列 4  种格式显示数据。读者可以在资源管理器中的视图(View)菜单中切换 

列表视图的显示格式,来看看 4 种格式的不同之处。  

    o  大图标格式(Large Icons ):可逐行显示多列表项,图标的大小可由应用程序指定,通 

      常是 32 ×32 像素,在图标的下面显示标题。  

    o  小图标格式(Small Icons):可逐行显示多列表项,图标的大小可由应用程序指定,通 

      常是 16×16 像素,在图标的右面显示标题。表项以行的方式组织。  

    o  列表格式(List )。与小图标格式类似。不同之处在于表项是逐列多列显示的。  

    o  报告格式(Report 或 Details ):每行仅显示一个表项,在标题的左边显示一个图标, 

      表项可以不显示图标而只显示标题。表项的右边可以附加若干列子项(Subitem),子 

      项只显示正文。在控件的顶端还可以显示一个列表头用来说明各列的类型。列表视图 

      的报告格式很适合显示报表(如数据库报表)。  

    典型的列表控件的格式如图 5…7 所示。  



                                                             



                             图 5…7    ClistCtrl 控件形式样例  



    在讨论如何使用列表视图控件以前,先向读者介绍一下与该控件有关的一些数据类型。  



    1.LV_COLUMN 结构  



    该结构仅用于报告式列表视图,用来描述表项的某一列。要想向表项中插入新的一列, 

需要用到该结构。LV_COLUMN 结构的定义为:  



    typedef struct _LV_COLUMN{  



        UINT mask;    



        //屏蔽位的组合(见下面括号 ),表明哪些成员是有效的  



        int fmt;  



        //该列的表头和子项的标题显示格式(LVCF_FMT) 。可以是 LVCFMT_CENTER 、LVCFMT_LEFT  



      //或 LVCFMT_RIGHT  



        int cx; // 以像素为单位的列的宽度(LVCF_FMT)  



        LPTSTR pszText; //指向存放列表头标题正文的缓冲区(LVCF_TEXT)  



        int cchTextMax; //标题正文缓冲区的长度(LVCF_TEXT)  



        int iSubItem; //说明该列的索引(LVCF_SUBITEM)  



    }LV_COLUMN;  



 ·130 ·  


…………………………………………………………Page 140……………………………………………………………

                                                                                  第 5 章    常用控件  



     2 .LV_ITEM 结构  



     该结构用来描述一个表项或子项,它包含了项的各种属性,其定义为如下:  



     typedef struct _LV_ITEM {    



          UINT mask;    



          //屏蔽位的组合(见下面括号 ),表明哪些成员是有效的  



          int iItem;    



          //从 0 开始编号的表项索引(行索引)  



          int iSubItem;    



          //从 1 开始编号的子项索引(列索引),若值为 0 则说明该成员无效,结构描述的是一个表项而不 



是子项  



          UINT state;    



          //项的状态(LVIF_STATE)  



          UINT stateMask;    



          //项的状态屏蔽  



          LPTSTR pszText;    



          //指向存放项的正文的缓冲区(LVIF_TEXT)  



      



          int cchTextMax;    



          //正文缓冲区的长度(LVIF_TEXT)  



          int iImage;    



          // 图标的索引(LVIF_IMAGE)  



          LPARAM lParam;    



          //32 位的附加数据(LVIF_PARAM)  



     }LV_ITEM;  



     其中    lParam   成员可用来存储与项相关的数据,这在有些情况下是很有用的。state                                            和 

stateMask 的值如表 5…19 所示,stateMask 用来说明要获取或设置哪些状态。  



     表 5…19                               列表视图的状态  



              状态                        对应的状态屏蔽                               含义  

 LVIS_CUT                          同左                         项被选择用来进行剪切和粘贴操作  

 LVIS_DROPHILITED                  同左                         项成为拖动操作的目标  

 LVIS_FOCUSED                      同左                         项具有输入焦点  

 LVIS_SELECTED                     同左                         项被选中  



     3 .NM_LISTVIEW 结构  



     该结构用于存储列表视图通知消息的有关信息,大部分列表视图的通知消息都会附带指 

向该结构的指针。 

                    NM_LISTVIEW  的定义如下:  



     typedef struct tagNM_LISTVIEW {  



          NMHDR hdr;    



          //标准的 NMHDR 结构  



          int iItem;    



                                                                                             ·131 ·  


…………………………………………………………Page 141……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



         //表项的索引,若为…1 则无效  



         int iSubItem;    



         //子项的索引,若为 0 则无效  



         UINT uNewState;    



         //项的新状态  



         UINT uOldState;    



         //项原来的状态  



         UINT uChanged;    



         //取值与 LV_ITEM 的 mask 成员相同,用来表明哪些状态发生了变化  



         POINT ptAction;    



         //事件发生时鼠标的客户区坐标  



         LPARAM lParam;    



         //32 位的附加数据  



     }NM_LISTVIEW;  



     4 .LV_DISPINFO 结构  



     该结构包含了与项的显示有关的信息,其定义为:  



     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          指定一个单选择列表视图。默认时可以多项
返回目录 上一页 下一页 回到顶部 0 1
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!