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

第28部分

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

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

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




pParentWnd 指向父窗口,该参数不能为 NULL 。nID 是按钮的 ID 。如果创建成功,该函数返 

回 TRUE,否则返回 FALSE 。  



    表 5…9                        按钮的风格  



           消息                                  含义  

 BS_AUTOCHECKBOX         同 BS_CHECKBOX ,不过单击鼠标时按钮会自动反转  

 BS_AUTORADIOBUTTON      同 BS_RADIOBUTTON ,不过单击鼠标时按钮会自动反转  

 BS_AUTO3STATE           同 BS_3STATE ,不过单击按钮时会改变状态  

 BS_CHECKBOX             指定在矩形按钮右侧带有标题的选择框  

                         指定默认的命令按钮,这种按钮的周围有一个黑框,用户可以按回车 

 BS_DEFPUSHBUTTON  

                         键来快速选择该按钮  

 BS_GROUPBOX             指定一个组框  

 BS_LEFTTEXT             使控件的标题显示在按钮的左边  

 BS_OWNERDRAW            指定一个自绘式按钮  

 BS_PUSHBUTTON           指定一个命令按钮  

 BS_RADIOBUTTON          指定一个单选按钮,在圆按钮的右边显示正文  

 BS_3STATE               同 BS_CHECKBOX ,不过控件有 3 种状态—选择、未选择和变灰  



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

等窗口风格,WS_TABSTOP 风格使控件具有 Tabstop 属性。创建一个普通按钮应指定的风格 

为  WS_CHILD|WS_VISIBLE|WS_TABSTOP 。 创 建 一 个 普 通 检 查 框 可 以 指 定 风 格 为 

WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX 。创建组中第一个单选按钮 

指定风格 WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_GROUP|BS_AUTORADIOBUTTON , 

组中其他单选按钮指定风格时则不应该包括 WS_TABSTOP 和 WS_GROUP 。  

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

出的控件风格。例如,在命令按钮的属性对话框中选择  Default  button ,相当于指定了 

BS_DEFPUSHBUTTON 。  



5。4。2    Cbutton 类的主要成员函数  



    下面介绍 CButton 类的主要的成员函数,这些成员函数在实际编程过程中有很大的用处。  



    1.GetState()函数  



    该成员函数声明如下:  



    UINT GetState() const;  



    该函数返回按钮控件的各种状态。可以用下列屏蔽值与函数的返回值相与,以获得各种 



 ·112 ·  


…………………………………………………………Page 122……………………………………………………………

                                                                  第 5 章    常用控件  



信息。返回值的状态主要定义有下面几种。  

    o  0x0003 :用来获取检查框或单选按钮的状态。0 表示未选中,1 表示被选中,2 表示不 

                                 

      确定状态(仅用于检查框 )。 

    o  0x0004 :用来判断按钮是否是高亮度显示。非 0 值意味着按钮是高亮度显示的。当单 

      击按钮并按住鼠标左键时,按钮会呈高亮度显示。  

    o  0x0008 :非零值表示按钮拥有输入焦点。  



    2 .SetState()函数  



    该成员函数声明如下:  



    void SetState(BOOL bHighlight);  



    当参数 bHeightlight 值为 TRUE  时,该函数将按钮设置为高亮度状态,否则,去除按钮 

的高亮度状态。  



    3 .GetCheck()函数  



    该成员函数声明如下:  



    int GetCheck() const;  



    返回检查框或单选按钮的选择状态 。返回值 0 表示按钮未被选择,1 表示按钮被选择,2 

表示按钮处于不确定状态(仅用于检查框 )。  



    4 .SetCheck()函数  



    该成员函数声明如下:  



    void SetCheck(int nCheck);  



    设置检查框或单选按钮的选择状态。参数 nCheck 的值含义与 GetCheck 返回值相同。  



    5 .GetButtonStyle()函数  



    该成员函数声明如下:  



    UINT GetButtonStyle() const;  



    该函数用于获得按钮控件的 BS_XXXX 风格。  



    6 .SetButtonStyle()函数  



    该成员函数声明如下:  



    void SetButtonStyle( UINT nStyle; BOOL bRedraw = TRUE );  



    设置按钮的风格,参数 nStyle 指定了按钮的风格,bRedraw 为 TRUE 则重绘按钮,否则 

就不重绘。  



    7 .SetBitmap()函数  



    该成员函数声明如下:  



    HBITMAP SetBitmap(HBITMAP hBitmap);  



    设置按钮显示的位图,参数 hBitmap 指定了位图的句柄,该函数还会返回按钮原来的位图。  



                                                                           ·113 ·  


…………………………………………………………Page 123……………………………………………………………

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



    8.GetBitmap()函数  



    该成员函数声明如下:  



    HBITMAP GetBitmap() const;  



    返回以前用 SetBitmap 设置的按钮位图。  



    9 .SetIcon()函数  



    该成员函数声明如下:  



    HICON SetIcon( HICON hIcon);  



    设置按钮显示的图标,参数 hIcon 指定了图标的句柄,该函数还会返回按钮原来的图标。  



    10.GetIcon()函数  



    该成员函数声明如下:  



    HICON GetIcon() const;  



    返回以前用 SetIcon 设置的按钮图标。  



    11.SetCursor()函数  



    该成员函数声明如下:  



    HCURSOR SetCursor(HCURSOR hCursor);  



    设置按钮上显示的光标图,参数 hCursor  指定了光标的句柄,该函数还会返回按钮原来 

的光标。  



    12.SetCursor()函数  



    该成员函数声明如下:  



    HCURSOR GetCursor();  



    返回以前用 GetCursor 设置的光标。  



    13.与按钮有关的 CWnd 成员函数  



    另外,可以使用下列的一些与按钮控件有关的 CWnd 成员函数来设置或查询按钮的状态。 

使用这些函数的好处在于不必构建按钮控件对象,只要知道按钮的 ID,就可以直接设置或查 

询按钮。  



    void CheckDlgButton(int nIDButton;UINT nCheck );  



用来设置按钮的选择状态 。参数 nIDButton 指定了按钮的 ID 。nCheck 的值为 0 表示按钮未被 

选择,为 1 表示按钮被选择,为 2 表示按钮处于不确定状态。  



    void CheckRadioButton(int nIDFirstButton;int nIDLastButton;int nIDCheckButton );  



用来选择组中的一个单选按钮。参数                    nIDFirstButton 指定了组中第 一个按钮的            ID , 

nIDLastButton 指定了组中最后一个按钮的 ID,nIDCheckButton 指定了要选择的按钮的 ID 。  



    int GetCheckedRadioButton(int nIDFirstButton; int nIDLastButton);  



用来获得一组单选按钮中被选中按钮的 ID 。参数nIDFirstButton 说明了组中第一个按钮的 ID, 

nIDLastButton 说明了组中最后一个按钮的 ID 。  



 ·114 ·  


…………………………………………………………Page 124……………………………………………………………

                                                                                                                第 5 章    常用控件  



       UINT IsDlgButtonChecked(int nIDButton) const;  



       返回检查框或单选按钮的选择状态 。返回值为 0 表示按钮未被选择,为 1 表示按钮被选 

择,为 2 表示按钮处于不确定状态(仅用于检查框 )。  

       同时还可以调用 CWnd 成员函数 GetWindowText()、GetWindowTextLength()和 SetWindow  

…Text()来查询或设置按钮中显示的正文。  



实例 5…1:控件基本使用方法实例。源代码在光盘中“05实例 5…1RMB ”目录下。  



       下面通过一个基于对话框的例子来说明控件的基本使用方法,该示例实现了将阿拉伯数 

字转换为汉字数字的功能。  

       主要代码如下:  



       const char* RMB(double rmb)  



       {  



               if(rmb19) return NULL;  



               int i=strlen(tmp)…1;c;  



               char *srcPtr=tmp;*dstPtr=result;  



               bool bPrevZero=false;  



               for(; *srcPtr; srcPtr++;i……) {  



                 if(*srcPtr==’。’) continue;  



                       c=*srcPtr…’0’;  



             if(c!=0) {  



                         strcpy(dstPtr;CCC'c'); dstPtr+=2;  



                               if(srcPtr==tmp && c==1 && strcmp(QQQ'i';〃拾〃)==0) dstPtr…=2;  



                         strcpy(dstPtr;QQQ'i');    dstPtr+=2;  



                               bPrevZero=false;  



                               continue;  



                       }  



                       if(bPrevZero) {  



                         if(strcmp(QQQ'i';〃 圆〃)==0 || strcmp(QQQ'i';〃万〃)==0 || strcmp(QQQ'i';〃亿〃)==0) {  



                                 dstPtr…=2; *dstPtr=0;  



                                 if(strcmp(dstPtr…2;〃亿〃)) {strcpy(dstPtr;QQQ'i'); dstPtr+=2;}  



                                       bPrevZero=false;  



                                                                                                                              ·115 ·  


…………………………………………………………Page 125……………………………………………………………

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



                                }  



                        } else {  



                          if(strcmp(QQQ'i';〃 圆〃) && strcmp(QQQ'i';〃万〃) && strcmp(QQQ'i';〃亿〃)) {  



                strcpy(dstPtr;〃零〃); dstPtr+=2;  



                                        bPrevZero=true;  



                                }else {  



                                  strcpy(dstPtr;QQQ'i');    dstPtr+=2;  



                                        bPrevZero=false;  



                                }  



            }  



                }  



                i=strlen(result);  



                if(strcmp(result+i…2;〃零〃)==0) result'i…2'=0;  



                tmp'0'=result'0'; tmp'1'=result'1'; tmp'2'=0;  



                if(strcmp(tmp;〃 圆〃)==0) {  



                        if(result'2'==0) strcpy(result;〃零圆〃);  



                        else {  



                          tmp'0'=result'2'; tmp'1'=result'3'; tmp'2'=0;  



                                return strcmp(tmp;〃零〃)==0 ? result+4 : result+2 ;  



                        }  



                }  



                return result;  



        }  



        界面上的“Convert ”按钮消息处理函数如下:  



        void CRMBDlg::OnConvertButton()    



        {  



                  



               if(UpdateData(TRUE))  



                {  



                        m_szCha = RMB(m_double);  



                        Upda

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

你可能喜欢的