八宝书库 > 文学其他电子书 > VC语言6.0程序设计从入门到精通 >

第29部分

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

小说: VC语言6.0程序设计从入门到精通 字数: 每页4000字

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






                {  



                        m_szCha = RMB(m_double);  



                        UpdateData(FALSE);  



                }  



                else  



                {  



                        m_szCha = 〃〃;  



                        UpdateData(FALSE);  



                }  



        }  



        运行界面如图 5…4 所示,详细的源代码设计可参考附带光盘。  



 ·116 ·  


…………………………………………………………Page 126……………………………………………………………

                                                                                                 第 5 章    常用控件  



                                                                                      



                                 图 5…4    阿拉伯数字与汉字数字之间的转换界面  



      技巧:改变控件的字体  



             控件也是窗口,可以调用 CWnd::SetFont  指定控件的新字体。该函数中使用一个 Cfont  指 



             针,以保证在控件撤消之前不能撤消字体对象。如下面的代码将下压按钮时的字体改为                                                           8 



             号 Arial 字体。  



      private :    



      CFont m_font ;    



      // Set font in class implementation (。Cpp file )。 Note m_wndButton is a    



      //member variable added by ClassWizard。DDX routines hook the member    



      //variable to a dialog button contrlo。    



      BOOL CSampleDialog::OnInitDialog()  



      {    



            。。。  



            //Create an 8…point Arial font    



            m_font。CreateFont (MulDiv (8;pDC…》GetDeviceCaps(LOGPIXELSY);72);  



            ;0;0;FW_NORMAL;0;0;0;ANSI_CHARSER;OUT_STROKE_PRECIS;CLIP_STROKE_PRECIS;  



            DRAFT_QUALITY;VARIABLE_PITCH|FF_SWISS;_T(〃Arial〃));    



            //Set font for push button 。    



            m_wndButton。SetFont (&m _font );      



            。。。  



      }  



5。5    列表框(List Box )控件  



5。5。1    列表框控件的使用  



      列表框也是一种传统控件,主要用于用户输入,它允许用户从所列出的表项中进行单项 

或多项选择,被选择的项呈高亮度显示。列表框具有边框,并且一般带有一个垂直滚动条。 

列表框分单选列表框和多重选择列表框两种。在单选列表框中一次只能选择一个列表项,而 

在多重选择列表框中可以进行多重选择。列表框会向父窗口发送如表 5…10 所示的通知消息。  

       



                                                                                                             ·117 ·  


…………………………………………………………Page 127……………………………………………………………

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



    表 5…10                    列表框控件的通知消息  



       消息                                   含义  

 LBN_DBLCLK       用户用鼠标双击了一列表项,只有具有 LBS_NOTIFY 的列表框才能发送该消息  

 LBN_ERRSPACE     列表框不能申请足够的动态内存来满足需要  

 LBN_KILLFOCUS    列表框失去输入焦点  

 LBN_SELCANCEL    当前的选择被取消,只有具有 LBS_NOTIFY 的列表框才能发送该消息  

 LBN_SELCHANGE    单击鼠标选择了一列表项,只有具有 LBS_NOTIFY 的列表框才能发送该消息  

 LBN_SETFOCUS     列表框获得输入焦点  

                  当 列 表 框 收 到 WM_CHAR   消 息 后 , 向 父 窗 口 发 送 该 消 息 , 只 有 具 有 

 WM_CHARTOITEM  

                  LBS_WANTKEYBOARDINPUT 风格的列表框才会发送该消息  

                  当列表框收到     WM_KEYDOWN   消息后,向父窗口发送该消息,只有具有 

 WM_VKEYTOITEM  

                  LBS_WANTKEYBOARDINPUT 风格的列表框才会发送该消息  



    列表框控件封装在 MFC 的 CListBox 类中,CListBox 类的 Create 成员函数用于列表框的 

创建,该函数的声明如下。  



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



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

合。rect 说明了控件的位置和尺寸。pParentWnd  指向父窗口,该参数不能为 NULL 。nID 则 

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



    表 5…11                     列表框控件的风格  



             风格                                   含义  

                              支持多重选择,在点击列表项时按住 Shift 键或 Ctrl 键即可选择 

 LBS_EXTENDEDSEL  

                              多个项  

 LBS_HASSTRINGS               指定一个含有字符串的自绘式列表框  

                              指  定  一  个  水  平  滚  动  的  多  列  列  表  框  ,  通  过  调  用 

 LBS_MULTICOLUMN  

                              CListBox::SetColumnWidth 来设置每列的宽度  

                              支持多重选择 。列表项的选择状态随着用户对该项单击或双击鼠 

 LBS_MULTIPLESEL  

                              标而翻转  

                              列表框的尺寸由应用程序而不是 Windows 指定。通常,Windows 

 LBS_NOINTEGRALHEIGHT  

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

 LBS_NOREDRAW                 当选择发生变化时防止列表框被更新,可发送消息改变该风格  

 LBS_NOTIFY                   当用户单击或双击鼠标时通知父窗口  

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

 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 SetIt

返回目录 上一页 下一页 回到顶部 0 0

你可能喜欢的