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

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

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


 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 类的成员函数时,采用了与对应的 CEdit 或 CListBox 成员函数相比较的做法。 

在成员函数的列表中,分别列出了成员函数名、对应的 CEdit 或 CListBox 成员函数以及二者 

之间的不同之处。  

    针对编辑框组件的主要成员函数如表 5…14 所示。该表的前 3 个函数实际上是 CWnd 类的 

成员函数,可用来查询和设置编辑框组件。  



    表 5…14             针对编辑框组件的 CboBox 成员函数  



         成员函数名               对应的 CEdit 成员函数        与 CEdit 成员函数的不同之处  

 CWnd::GetWindowText      CWnd::GetWindowText     无  

 CWnd::SetWindowText      CWnd::SetWindowText     无  

 CWnd::GetWindowTextLength  CWnd::GetWindowTextLength  无  

 GetEditSel               GetSel                  仅函数名不同  

 SetEditSel               SetSel                  函数名不同,且无 bNoScroll 参数  

 Clear                    Clear                   无  



 ·124 ·  


…………………………………………………………Page 134……………………………………………………………

                                                                               第 5 章    常用控件  



                                                                                       续表  



           成员函数名                      对应的 CEdit 成员函数              与 CEdit 成员函数的不同之处  

 Copy                             Copy                           无  

 Cut                              Cut                            无  

 Paste                            Paste                          无  



     与 CListBox 的成员函数类似,针对列表框组件的 CboBox 成员函数也可以分为 3 类。 

表 5…15 列出了用于插入和删除列表项的成员函数,表 5…16 列出了用于搜索、查询和设置列 

表框的成员函数,与列表项的选择有关的成员函数如表 5…17 所示。需要指出的是,如果这些 

函数出错,则返回 CB_ERR,而不是 LB_ERR 。另外,排序的组合框具有的是 CBS_SORT 风 

格,而不是 LBS_SORT 。  



     表 5…15               用于插入和删除列表项的 CboBox 成员函数  



           成员函数名                    对应的 CListBox 成员函数             与 CEdit 成员函数的不同之处  

 AddString                       AddString                      无  

 InsertString                    InsertString                   无  

 DeleteString                    DeleteString                   无  

 ResetContent                    ResetContent                   无  

 Dir                             Dir                            无  



     表 5…16            用于搜索、查询和设置列表框的 CboBox 成员函数  



           成员函数名                    对应的 CListBox 成员函数             与 CEdit 成员函数的不同之处  

 GetCount                        GetCount                       无  

 FindString                      FindString                     无  

 GetLBText                       GetText                        仅函数名不同  

 GetLBTextLen                    GetTextLen                     仅函数名不同  

 GetItemData                     GetItemData                    无  

 SetItemData                     SetItemData                    无  

 GetTopIndex                     GetTopIndex                    无  

 SetTopIndex                     SetTopIndex                    无  



       



     表 5…17                与列表项的选择有关的 CboBox 成员函数  



           成员函数名                    对应的 CListBox 成员函数             与 CEdit 成员函数的不同之处  

 GetCurSel                       GetCurSel                      无  

                                                                新选的列表项的内容会被拷贝到 

 SetCurSel                       SetCurSel  

                                                                编辑框组件中  

                                                                新选的列表项的内容会被拷贝到 

 SelectString                    SelectString  

                                                                编辑框组件中  



5。7    图片(Picture )控件  



     图片(Picture )控件实际上是一种静态文本(CStatic )控件,可以通过在创建静态文本 

控件时加入特定的标志来得到图片控件,这些方面的内容,具体可以参见  5。1 节。这里主要 

介绍一下如何在资源编辑器中快捷方便地使用图片控件。  

     选中图片控件后拖放到对话框上,可以通过图片控件属性对话框来对图片控件进行基本 



                                                                                        ·125 ·  


…………………………………………………………Page 135……………………………………………………………

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



设置,图片对话框如图 5…5 所示。  



                                                                                       



                                      图 5…5    Picture Properties 对话框  



      图片控件所支持的格式如表 5…18 所示。  



      表 5…18                               Picture 控件支持的格式  



              格式                                                含义  

      Frame                   显示一个无填充的矩形框,边框颜色可以通过 Color 下拉列表设定  

      Rectangle               显示一个填充的矩形框,矩形颜色可通过 Color 下拉列表设定  

      Icon                    显示一个图标(Icon ),图标通过 Image 下拉列表来设置图标资源 ID  

      Bitmap                  显示一个位图(Bitmap ),位图通过 Image 下拉列表来设置位图资源 ID  

      Enhanced Metafile       显示一个加强的元数据文件(Metafile )  



      由于图片控件在具体使用方法上和静态文本控件没有什么差别,因此在这里就不详细叙 

述了。  



      实例 5…3:美化对话框应用程序实例。源代码在光盘中“05实例 5…3New_RMB ”目录下。  



      下面为数字转换一例中的截面定制漂亮的界面和按钮,通过此例程读者将学习到如何美 

化对话框应用程序的界面。  

      定制“外衣”的主要代码是使用 WM_ERASEBKGND 、WM_CTLCOLOR 消息重画用户 

界面,利用 CBitmapButton 实现位图按钮,主要代码如下:  



      HBRUSH CRMBDlg::OnCtlColor(CDC* pDC; CWnd* pWnd; UINT nCtlColor)    



      {  



           HBRUSH hbr = CDialog::OnCtlColor(pDC; pWnd; nCtlColor);  



             



           // TODO: Change any attributes of the DC here  



           switch(nCtlColor) {  



           case CTLCOLOR_EDIT:  



                {  



                      if (pWnd…》GetDlgCtrlID() == IDC_EDIT_NUM)  



                      {  



                           pDC…》SetBkMode(TRANSPARENT);  



                           pDC…》SetTextColor(RGB(200;10;200)); //改变字体的颜色  



                           hbr = HBRUSH(GetStockObject(HOLLOW_BRUSH));  



                      }  



                      else if(pWnd…》GetDlgCtrlID() == IDC_EDIT_CHA)  



                      {  



 ·126 ·  


…………………………………………………………Page 136……………………………………………………………

                                                                                                                  第 5 章    常用控件  



                              pDC…》SetBkMode(TRANSPARENT);  



                              pDC…》SetTextColor(RGB(200;10;200)); //改变字体的颜色  



                              hbr = HBRUSH(GetStockObject(HOLLOW_BRUSH));  



                      }  



                      else  



                      {  



                              hbr = CDialog::OnCtlColor(pDC; pWnd; nCtlColor);  



                      }  



                      break;                  



               }  



       case CTLCOLOR_STATIC:  



               {  



                      if(pWnd…》GetDlgCtrlID() == IDC_SMALL_STATIC)  



                      {  



                              pDC…》SetBkMode(TRANSPARENT);  



                              pDC…》SetTextColor(RGB(10;10;255));  



                              hbr = (HBRUSH)GetStockObject(HOLLOW_BRUSH);  



                      }  



                      else if(pWnd…》GetDlgCtrlID() == IDC_LARGE_STATIC)  



                      {  



                              pDC…》SetBkMode(TRANSPARENT);  



                              pDC…》SetTextColor(RGB(255;10;10));  

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