友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
富士康小说网 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

VC语言6.0程序设计从入门到精通-第20部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!



 LBS_OWNERDRAWFIXED  

                              表项有相同的高度  

 LBS_OWNERDRAWVARIABLE        指定自绘式列表框,并且列表项有不同的高度  

 LBS_SORT                     使插入列表框中的项按升序排列  

 LBS_STANDARD                 相当于指定了 WS_BORDER|WS_VSCROLL|LBS_SORT  

                              使列表框在显示列表项时识别并扩展制表符(‘t ’) ,默认的制表宽 

 LBS_USETABSTOPS  

                              度是 32 个对话框单位  

                              允  许  列  表  框  的  父  窗  口  接  收 WM_VKEYTOITEM 和 

 LBS_WANTKEYBOARDINPUT  

                              WM_CHARTOITEM 消息,以响应键盘输入  

 LBS_DISABLENOSCROLL          使列表框在不需要滚动时显示一个禁止的垂直滚动条  



    除了上表中的风格外,一般还要为列表框控件指定                        WS_CHILD 、WS_VISIBLE 、 

WS_TABSTOP 、WS_BORDER 和 WS_VSCROLL 等风格。要创建一个普通的单选择列表框, 

应指定的风格为  WS_CHILD|WS_VISIBLE|WS_TABSTOP|LBS_STANDARD 。要创建一个多 

重选择列表框,应该在单选择列表框风格的基础上再加上  LBS_MULTIPLESEL                          或  LBS_  

EXTENDEDSEL 。如果不希望列表框排序,就不能使用 LBS_STANDARD 风格。  



 ·118 ·  


…………………………………………………………Page 128……………………………………………………………

                                                                第 5 章    常用控件  



    对于用对话框模板编辑器创建的列表框控件,可以在控件的属性对话框中指定表 5…11 中 

列出的控件风格。例如,在属性对话框中选择 Sort 项,相当与指定了 LBS_SORT 风格。  



5。5。2    ClistBox 类的主要成员函数  



    CListBox 类的成员函数有很多,分别介绍如下:  



    1.AddString() 函数  



    该成员函数声明如下:  



    int AddString(LPCTSTR lpszItem);  



    该函数用来向列表框中加入字符串,其中参数 lpszItem 指定了要添加的字符串。函数的 

返回值是加入的字符串在列表框中的位置,如果发生错误,会返回 LB_ERR 或 LB_ERRSPACE 

(内存不够)。如果列表框未设置LBS_SORT 风格,那么字符串将被添加到列表的末尾,如果 

设置了 LBS_SORT 风格,字符串会按排序规律插入到列表中。  



    2 .InsertString()函数  



    该成员函数声明如下:  



    int InsertString(int nIndex; LPCTSTR lpszItem);  



    该函数用来在列表框中的指定位置插入字符串。参数 nIndex  给出了插入位置(索引 ), 

如果值为…1,则字符串将被添加到列表的末尾。参数 lpszItem  指定了要插入的字符串。该函 

数返回实际的插入位置,若发生错误,会返回 LB_ERR 或 LB_ERRSPACE 。与 AddString  函 

数不同的是,InsertString    函数不会导致  LBS_SORT       风格的列表框重新排序。不要在具有 

LBS_SORT 风格的列表框中使用 InsertString 函数,以免破坏列表项的次序。  



    3 .DeleteString() 函数  



    该成员函数声明如下:  



    int DeleteString(UINT nIndex);  



    该函数用于删除指定的列表项,其中参数 nIndex 指定了要删除项的索引。函数的返回值 

为剩下的表项数目,如果 nIndex 超过了实际的表项总数,则返回 LB_ERR 。  



    4 .ResetContent() 函数  



    该成员函数声明如下:  



    void ResetContent();  



    该函数用于清除所有列表项。  



    5 .GetCount()函数  



    该成员函数声明如下:  



    int GetCount() const;  



    该函数返回列表项的总数,若出错则返回 LB_ERR 。  



                                                                        ·119 ·  


…………………………………………………………Page 129……………………………………………………………

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



    6 .FindString() 函数  



    该成员函数声明如下:  



    int FindString(int nStartAfter;LPCTSTR lpszItem) const;  



    该函数用于对列表项进行与大小写无关的搜索。参数 nStartAfter 指定了开始搜索的位置;  

合理指定 nStartAfter 可以加快搜索速度,若 nStartAfter 为…1,则从头开始搜索整个列表。参 

数 lpszItem 指定了要搜索的字符串。函数返回与 lpszItem 指定的字符串相匹配的列表项的索 

引,若没有找到匹配项或发生了错误,则会返回  LB_ERR 。FindString                    函数先从  nStartAfter 

指定的位置开始搜索,若没有找到匹配项,则会从头开始搜索列表。只有找到匹配项,或对 

整个列表搜索完一遍后,搜索过程才会停止,所以不必担心会漏掉要搜索的列表项。  



    7 .GetText()函数  



    该成员函数声明如下:  



    int GetText(int nIndex;LPTSTR lpszBuffer) const;  



    void GetText(int nIndex;CString& rString) const;  



    这两个成员函数用于获取指定列表项的字符串 。参数 nIndex 指定了列表项的索引。参数 

lpszBuffer 指向一个接收字符串的缓冲区 。引用参数 rString 则指定了接收字符串的 CString 对 

象。第一个版本的函数会返回获得的字符串的长度,若出错,则返回 LB_ERR ;第二个版本 

的函数则不会。  



    8.GetTextLen()函数  



    该成员函数声明如下:  



    int GetTextLen(int nIndex) const;  



    该函数返回指定列表项的字符串的字节长度。参数 nIndex 指定了列表项的索引 。若出错 

则返回 LB_ERR 。  



    9 .GetItemData()函数  



    该成员函数声明如下:  



    DWORD GetItemData(int nIndex) const;  



    每个列表项都有一个 32 位的附加数据 。该函数返回指定列表项的附加数据,参数 nIndex 

指定了列表项的索引。若出错则函数返回 LB_ERR 。  



    10.SetItemData()函数  



    该成员函数声明如下:  



    int SetItemData(int nIndex; DWORD dwItemData);  



    该函数用来指定某一列表项的              32 位附加数据。参数          nIndex 指定了列表项的索引。 

dwItemData 是要设置的附加数据值。  



    11.GetSel()函数  



    该成员函数声明如下:  



 ·120 ·  


…………………………………………………………Page 130……………………………………………………………

                                                                  第 5 章    常用控件  



    int GetSel(int nIndex) const;  



    该函数返回指定列表项的状态。参数 nIndex 指定了列表项的索引 。如果查询的列表项被 

选择了,函数返回一个正值,否则返回 0,若出错则返回 LB_ERR 。  



    12.GetCurSel()函数  



    该成员函数声明如下:  



    int GetCurSel() const;  



    该函数仅适用于单选择列表框,用来返回当前被选择项的索引,如果没有列表项被选择 

或有错误发生,则函数返回 LB_ERR 。  



    13.SetCurSel()函数  



    该成员函数声明如下:  



    int SetCurSel(int nSelect);  



    该函数仅适用于单选择列表框,用来选择指定的列表项。该函数会滚动列表框以使选择 

项可见。参数 nIndex 指定了列表项的索引,若为…1,那么将清除列表框中的选择。若出错函 

数返回 LB_ERR 。  



    14.SelectString()函数  



    该成员函数声明如下:  



    int SelectString(int nStartAfter;LPCTSTR lpszItem);  



    该函数仅适用于单选择列表框,用来选择与指定字符串相匹配的列表项。该函数会滚动 

列表框以使选择项可见。参数的意义及搜索的方法与函数 FindString  类似。如果找到了匹配 

的项,函数返回该项的索引,如果没有匹配的项,函数返回 LB_ERR 并且当前的选择不被改 

变。  



    15.GetSelCount()函数  



    该成员函数声明如下:  



    int GetSelCount() const;  



    该函数仅用于多重选择列表框,它返回选择项的数目,若出错函数返回 LB_ERR 。  



    16.SetSel()函数  



    该成员函数声明如下:  



    int SetSel(int nIndex;BOOL bSelect = TRUE);  



    该函数仅适用于多重选择列表框,它使指定的列表项选中或落选。参数 nIndex 指定了列 

表项的索引,若为…1,则相当于指定了所有的项。参数 bSelect 为 TRUE 时选中列表项,否则 

使之落选。若出错则返回 LB_ERR 。  



    17.GetSelItems()函数  



    该成员函数声明如下:  



    int GetSelItems(int nMaxItems; LPINT rgIndex) const;  



                                                                          ·121 ·  


…………………………………………………………Page 131……………………………………………………………

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



    该函数仅用于多重选择列表框,用来获得选中的项的数目及位置。参数 nMaxItems 说明 

了参数 rgIndex 指向的数组的大小。参数 rgIndex 指向一个缓冲区,该数组是一个整型数组, 

用来存放选中的列表项的索引。函数返回放在缓冲区中的选择项的实际数目,若出错函数返 

回 LB_ERR 。  



    18.SetItemRange()函数  



    该成员函数声明如下:  



    int SetItemRange(BOOL bSelect;int nFirstItem;int nLastItem);  



    该函数仅用于多重选择列表框,用来使指定范围内的列表项选中或落选。参数 nFirstItem 

和 nLastItem 指定了列表项索引的范围 。如果参数 bSelect 为 TRUE,那么就选择这些列表项, 

否则就使它们落选。若出错函数返回 LB_ERR 。  



技巧:实现列表框的提示条(可以显示完整的列表框的项目文本)  



     用一个  CListBox  派生类实现宿主(owner…draw )列表框,这个列表框的项目宽度超过了列表框本身 



     的宽度,因此当鼠标指针指向大宽度的列表框项时,希望显示一个类似 Toolbar  的提示窗口,在窗口 



     中显示完整的列表框项目文本。  



     附带光盘下的工程演示列表框提示条的实现,主要是创建了可重用窗口类 CPopupText 。  



     CPopupText 类会根据提示文本的长度自己决定弹出窗口的大小。它的字体默认值与状态行显示字体 



     相同(由 SystemParametersInfo(SPI_GETNONCLIENTMETRICS)返回的  NONCLIENTMETRICS  结构 



     成员  lfStatusFont  定义),设置  SW_SHOWNA  是很重要的,因为你不想使提示窗口为活动窗口,而 



     只是显示它。另外,CPopupText 还提供一个专门的函数 CPopupText::ShowDelayed,它的功能是在显 



     示提示窗口之前设置一个毫秒级延时,如果延时为零,则立刻显示提示窗口,你可以使用这个特点来 



     替代对 ShowWindow 的调用。如果要隐藏提示窗口或取消 ShowDelayed,调用 CPopupText::Cancel 。  



      



实例 5…2:实现列表框的提示条实例。源代码在光盘中“05实例 5…2ListTest ”目录下。  



5。6    组合框(bo box )控件  



5。6。1    组合框控件的使用  



    组合框是一种传统控件,把一个编辑框和一个单选择列表框结合在了一起。用户既可以 

在编辑框中输入,也可以从列表框中选择一个列表项来完成输入。组合框分为简易式 

(Simple )、下拉式(Dropdown )和下拉列表式(Drop  List )3 种。简易式组合框包含一个编 

辑框和一个总是显示的列表框。下拉式组合框同简易式组合框类似,二者的区别在于单击下 

拉箭头后是否会弹出列表框。下拉列表式组合框也有一个下拉的列表框,但它的编辑框是只 

读的,不能输入字符。  

    Windows 中比较常用的是下拉式和下拉列表式组合框,在集成开发环境(IDE )中就大 



 ·122 ·  


…………………………………………………………Page 132……………………………………………………………

                                                            第 5 章    常用控件  



量使用了这两种组合框 。二者都具有占地小的特点,这在界面日益复杂的今天是十分重要的。 

下拉列表式组合框的功能与列表框类似。下拉式组合框的典型应用是作为记事列表框使用, 

既把用户在编辑框中敲入的东西存储到列表框组件中,这样当要重复同样的输入时,可以从 

列表框组件中选取而不必在编辑框组件中重新输入。在集成开发环境(IDE )中的 Find 对话 

框中就可以找到一个典型的下拉式组合框。  

    应用一个列表框控件时,主要应遵循下列原则。  

    o  在创建组合框时指定 CBS_DROPDOWNLIST 风格。  

    o  要限制列表项的数目,以防止内存不够。  

    o  如果在编辑框中输入的字符串不能与列表框组件中的列表项匹配,那么应该把该字符 

      串插入到列表框中的 0 位置处。最老的项处于列表的末尾。如果列表项的数目超出了 

      限制,则应把最老的项删除。  

    o  如果在编辑框中输入的字符串可以与列表框组件中的某一项完全匹配,则应该先把该 

     项从列表的当前位置删除,然后在将其插入列表的 0 位置处。  

    组合框控件会向父窗口发送控件通知消息,主要的通知消息如表 5…12 所示的。  



    表 5…12                   组合框控件的通知消息  



           消息                                  含义  

 CBN_CLOSEUP             组合框的列表框组件被关闭,简易式组合框不会发出该消息  

 CBN_DBLCLK              用户在某列表项上双击鼠标,只有简易式组合框才会发出该消息  

 CBN_DROPDOWN            组合框的列表框组件下拉,简易式组合框不会发出该消息  

                         编辑框的内容被用户改变了,与 CBN_EDITUPDATE 不同,该消息是 

 CBN_EDITCHANGE          在编辑框显示的正文被刷新后才发出的,下拉列表式组合框不会发出 

                         该消息  

                         在编辑框准备显示改变了的正文时发送该消息,下拉列表式组合框不 

 CBN_EDITUPDATE  

                         会发出该消息  

 CBN_ERRSPACE            组合框无法申请足够的内存来容纳列表项  

                         表明用户的选择应该取消,当用户在列表框中选择了一项,然后又在 

 CBN_SELENDCANCEL  

                         组合框控件外单击鼠标时就会导致该消息的发送  

                         用户选择了一项,然后按了回车键或单击了下滚箭头,该消息表明用 

 CBN_SELENDOK  

                         户确认了自己所作的选择  

 CBN_KILLFOCUS           组合框失去了输入焦点  

 CBN_SELCHANGE           用户通过单击或移动箭头键改变了列表的选择  

 CBN_SETFOCUS            组合框获得了输入焦点  



    组合框控件封装在 MFC 的 CboBox 类中。需要指出的是,虽然组合框是编辑框和列 

表框的组合,但是 CboBox 类并不是 CEdit 类和 CListBox 类的派生类,而是 CWnd 类的 

派生类。  

    CboBox 的成员函数 Create 负责创建组合框,该函数的声明如下:  



    BOOL Create(DWORD dwStyle;const RECT& rect;CWnd* pParentWnd;UINT nID);  



    参数 dwStyle 指定了组合框控件的风格,如表 5…13 所示,dwStyle 可以是这些风格的组 

合。rect 说明的是列表框组件下拉后组合框的位置和尺寸。pParentWnd 指向父窗口,该参数 

不能为 NULL 。nID 则说明了控件的 ID 。如果创建成功,该函数返回 TRUE,否则返回 FALSE 。  

      

      

      



                                                                    ·123 ·  


…………………………………………………………Page 133……………………………………………………………

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



    表 5…13                      组合框的风格  



           风格                                   含义  

 CBS_AUTOHSCROLL           使编辑框组件具有水平滚动的风格  

 CBS_DROPDOWN              指定一个下拉式组合框  

 CBS_DROPDOWNLIST          指定一个下拉列表式组合框  

 CBS_HASSTRINGS            指定一个含有字符串的自绘式组合框  

                           使编辑框组件中的正文可以在 ANSI 字符集和 OEM 字符集之间相互 

 CBS_OEMCONVERT  

                           转换。这在编辑框中包含文件名时是很有用的  

                           指定自绘式组合框,即由父窗口负责绘制列表框的内容,并且列表 

 CBS_OWNERDRAWFIXED  

                           项有相同的高度  

 CBS_OWNERDRAWVARIABLE     指定自绘式组合框,并且列表项有不同的高度  

 CBS_SIIMPLE               指定一个简易式组合框  

 CBS_SORT                  自动对列表框组件中的项进行排序  

 CBS_DISABLENOSCROLL       使列表框在不需要滚动时显示一个禁止的垂直滚动条  

                           组合框的尺寸由应用程序而不是 Windows 指定,通常,由 Windows 

 CBS_NOINTEGRALHEIGHT  

                           指定尺寸会使列表项的某些部分隐藏起来  



    CBS_SIMPLE、CBS_DROPDOWN 和 CBS_DROPDOWNLIST 分别用来将组合框指定为 

简易式、下拉式和下拉列表式。一般还要为组合框指定                         WS_CHILD 、WS_VISIBLE 、 

WS_TABSTOP 、WS_VSCROLL 和 CBS_AUTOHSCROLL 风格。如果要求自动排序,还应指 

定 CBS_SORT 风格。  

    对于用对话框模板编辑器创建的组合框控件,可以在控件的属性对话框中指定上表中列 

出的控件风格。例如,在属性对话框中选择 Dropdown ,相当于指定了 CBS_DROPDOWN 。  



5。6。2    CboBox 类的主要成员函数  



    CboBox 类的成员函数较多。其中常用的函数可分为两类,分别针对编辑框组件和 

列表框组件。可以想象,这些函数与 CEdit 类和 CListBox 类的成员函数肯定有很多类似之处, 

但它们也会有一些不同的特点。如果读者能从“组合框是由编辑框和列表框组成”这一概念 

出发,就能够很快的掌握 CboBox 的主要成员函数。  

    事实上,绝大部分 CboBox 的成员函数都可以看成是 CEdit 或 CListBox 成员函数的 

重现。函数的功能、函数名,甚至函数的参数都是类似的。为了方便学习,下面在介绍 

CboBox 类的成员函数时,采用了与对应�
返回目录 上一页 下一页 回到顶部 赞(1) 踩(1)
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!