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

第27部分

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

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

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






      }  



                                                                                                          ·107 ·  


…………………………………………………………Page 117……………………………………………………………

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



     如果要修改字符,则不能仅仅简单地用修改过的  nChar                             调用    CEdit::OnChar ,然后用 

CEdit::OnChar 调用 CWnd::Default 获取原来的 wParam  和 lParam  的值。要修改一个字符, 

需要首先修改 nChar ,然后用修改过的 nChar 调用 CWnd: : DefWindowProc 。下例说明了如何 

将字符转变为大写。  



     //Make all characters uppercase    



     void CMyEdit::OnChar (UINT nChar;UINT nRepCnt;UINT nFlags)    



     {    



         //Make sure character is uppercase 。    



         if (::IsCharAlpha (( TCHAR) nChar))    



              nChar=::CharUpper (nChar ) ;    



         //Bypass default OnChar processing and directly call    



         //default window proc。    



         DefWindProc(WM_CHAR;nChar;MAKELPARAM (nRepCnt;nFlags));    



     }  



5。3    滚动条(Scroll Bar)控件  



5。3。1    滚动条控件的使用  



     滚动条(Scroll Bar)是一种传统控件,主要用来从某一预定义值范围内快速有效地进行 

浏览,分为垂直滚动条(Horizontal Scroll Bar )和水平滚动条(Vertical Scroll Bar )两种,如 

图 5…3 所示。在滚动条内有一个滚动框,用来表示当前的值。用鼠标单击滚动条,可以使滚 

动框移动一页或一行,也可以直接拖动滚动框。滚动条既可以作为一个独立控件存在,也可 

以作为窗口、列表框和组合框的一部分。Windows 2000 中还支持比例滚动框,即用滚动框的 

大小来反映页相对于整个范围的大小。  



                                                             



                                     图 5…3    滚动条样例  



     需要指出的是,从性质上划分,滚动条可分为标准滚动条和滚动条控件两种。标准滚动 

条是由 WS_HSCROLL 或 WS_VSCROLL 风格指定的,它不是一个实际的窗口,而是窗口的 

一个组成部分(例如列表框中的滚动条 ),只能位于窗口的右侧(垂直滚动条 )或底端(水平 

滚动条),标准滚动条是在窗口的非客户区中创建的 。与之相反,滚动条控件并不是窗口中的 

一部分,而是一个实际的窗口,可以放置在窗口客户区的任意地方,它既可以独立存在,也 

可以与某一个窗口组合,行使滚动窗口的职能。由于滚动条控件是一个独立窗口,因此可以 

拥有输入焦点,可以响应光标控制键,如 PageUp 、PageDown 、Home 和 End 等。  



 ·108 ·  


…………………………………………………………Page 118……………………………………………………………

                                                                第 5 章    常用控件  



    滚动条控件封装在 MFC 的 CScrollBar 类中,CScrollBar 类的 Create 成员函数用于创建控 

件,该函数的声明如下:  



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



    参数 dwStyle 指定了控件的风格,rect 说明了控件的位置和尺寸,pParentWnd 指向父窗 

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

则返回 FALSE 。  

    要创建一个普通的水平滚动条控件,应指定风格 WS_CHILD|WS_VISIBLE|BS_HORZ , 

要创建一个普通的垂直滚动条控件,应指定风格 WS_CHILD|WS_VISIBLE|BS_VERT 。  



5。3。2    CscrollBar 类的主要成员函数  



    下面将介绍 CScrollBar 类主要的成员函数。  



    1.GetScrollPos()函数  



    该成员函数声明如下:  



    int GetScrollPos() const;  



    该函数返回滚动框的当前位置,若操作失败则返回 0 。  



    2 .SetScrollPos()函数  



    该成员函数声明如下:  



    int SetScrollPos(int nPos;BOOL bRedraw = TRUE);  



    该函数将滚动框移动到指定位置。参数 nPos  指定了新的位置,参数 bRedraw  表示是否 

需要重绘滚动条,如果为 TRUE,则重绘之。函数返回滚动框原来的位置,若操作失败则返 

回 0 。  



    3 .GetScrollRange()函数  



    该成员函数声明如下:  



    void GetScrollRange(LPINT lpMinPos;LPINT lpMaxPos) const;  



    该函数对滚动条的滚动范围进行查询。参数 lpMinPos 和 lpMaxPos 分别指向滚动范围的 

最小、最大值。  



    4 .SetScrollRange()函数  



    该成员函数声明如下:  



    void SetScrollRange(int nMinPos;int nMaxPos;BOOL bRedraw = TRUE);  



    该函数用于指定滚动条的滚动范围。参数 nMinPos 和 nMaxPos 分别指定了滚动范围的最 

小、最大值,由这两者指定的滚动范围不得超过 32767 。当两者都为 0 时,滚动条将被隐藏。 

参数 bRedraw 表示是否需要重绘滚动条,如果为 TRUE,则重绘之。  



    5 .GetScrollInfo()函数  



    该成员函数声明如下:  



                                                                        ·109 ·  


…………………………………………………………Page 119……………………………………………………………

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



     BOOL GetScrollInfo(LPSCROLLINFO lpScrollInfo;UINT nMask);  



     该函数用来获取滚动条的各种状态,包括滚动范围、滚动框的位置和页尺寸,参数 

lpScrollInfo 指向一个 SCROLLINFO 结构,该结构定义如下:  



     typedef struct tagSCROLLINFO {  



         UINT cbSize;    



         //结构的尺寸(字节为单位)  



         UINT fMask;    



         //说明结构中的哪些参数是有效的,可以是屏蔽值的组合;如  SIF_POS|SIF_PAGE,若为 SIF_ALL 



则整个结构都有效  



         int nMin;    



         //滚动范围最大值,当 fMask 中包含 SIF_RANGE 时有效  



         int nMax;    



         //滚动范围最小值,当 fMask 中包含 SIF_RANGE 时有效  



         UINT nPage;    



         //页尺寸,用来确定比例滚动框的大小,当 fMask 中包含  SIF_PAGE 时有效  



         int nPos;    



         //滚动框的位置,当 fMask 中包含 SIF_POS 有效  



         int nTrackPos;    



         //滚动时滚动框的位置,当 fMask 中包含 SIF_TRACKPOS 时有效,该参数只能查询,不能设置, 



最好不要用该参数来查询拖动时滚动框的位置  



     }SCROLLINFO;    



     typedef SCROLLINFO FAR *LPSCROLLINFO;  



     参数  nMask   的意义与 SCROLLINFO  结构中的  fMask  相同,函数在获得有效值后返回 

TRUE,否则返回 FALSE 。  



     6 .SetScrollInfo()函数  



     该成员函数声明如下:  



     BOOL SetScrollInfo(LPSCROLLINFO lpScrollInfo;BOOL bRedraw = TRUE);  



     该函数用于设置滚动条的各种状态,如设定页尺寸从而实现比例滚动框。参数lpScrollInfo 

指向一个 SCROLLINFO 结构,参数 bRedraw 表示是否需要重绘滚动条,如果为 TRUE,则 

重绘之。若操作成功,该函数返回 TRUE,否则返回 FALSE 。  

     CWnd 类也提供了一些函数来查询和设置所属的标准滚动条。这些函数与 CScrollBar 类 

的函数同名,且功能相同,但每个函数都多了一个参数,用来选择滚动条。  



     7 .GetScrollPos()函数  



     该成员函数声明如下:  



     int GetScrollPos(int nBar) const;  



     参数 nBar 用来选择滚动条,可以为下列值。  

     o  SB_HORZ:指定水平滚动条。  

     o  SB_VERT:指定垂直滚动条。  



 ·110 ·  


…………………………………………………………Page 120……………………………………………………………

                                                           第 5 章    常用控件  



    8.OnHScroll()和 OnVScroll()函数  



    无论是标准滚动条,还是滚动条控件,滚动条的通知消息都是用                        WM_HSCROLL   和 

WM_VSCROLL   消息发送出去的 。对这两个消息的默认处理函数是  CWnd::OnHScroll                和 

CWnd::OnVScroll,一般需要在派生类中对这两个函数从新设计,以实现滚动功能。这两个函 

数的声明如下:  



    afx_msg void OnHScroll(UINT nSBCode;UINT nPos;CScrollBar* pScrollBar);  



    afx_msg void OnVScroll(UINT nSBCode;UINT nPos;CScrollBar* pScrollBar);  



    参数 nSBCode 是通知消息码,主要通知码如表 5…7 所示。nPos 是滚动框的位置,只有在 

nSBCode 为 SB_THUMBPOSITION 或 SB_THUMBTRACK 时,该参数才有意义。如果通知 

消息是滚动条控件发来的,那么 pScrollBar 是指向该控件的指针,如果是标准滚动条发来的, 

则 pScrollBar 为 NULL 。  



    表 5…7                       通知消息码  



             消息                                  含义  



 SB_BOTTOM/SB_RIGHT            滚动到底端(右端)  



 SB_TOP/SB_LEFT                滚动到顶端(左端)  



 SB_LINEDOWN/SB_LINERIGHT      向下(向右)滚动一行(列)  



 SB_LINEUP/SB_LINELEFT         向上(向左)滚动一行(列)  



 SB_PAGEDOWN/SB_PAGERIGHT      向下(向右)滚动一页  



 SB_PAGEUP/SB_PAGELEFT         向上(向左)滚动一页  



 SB_THUMBPOSITION              滚动到指定位置  



 SB_THUMBTRACK                 滚动框被拖动。可利用该消息来跟踪对滚动框的拖动  



 SB_ENDSCROLL                  滚动结束  



5。4    按钮(Button、Radio Box、Check Box、Group Box )控件  



5。4。1    按钮控件的使用  



    按钮也是一种传统控件。按钮控件包括命令按钮(Pushbutton )、检查框(Check Box )、 

单选按钮(Radio Button )、组框(Group Box )和自绘式按钮(Owner…draw Button )。命令按 

钮的作用是对鼠标的单击作出反应并触发相应的事件,在按钮中既可以显示文本,也可以显 

示位图。选择框控件作为一种选择标记,可以有选中、不选中和不确定 3 种状态。单选按钮 

控件一般都是成组出现的,具有互斥的性质,即同组单选按钮中只能有一个是被选中的。组 

框用来将相关的一些控件聚成一组。自绘式按钮是指由程序而不是系统负责重绘的按钮。  

    选择框和单选按钮是一种特殊的按钮,它们有选择和未选择两种状态。当一个选择框处 

于选择状态时,选择框的小方框内会出现一个“√”,当单选按钮处于选择状态时,会在圆圈 

中显示一个黑色实心圆。此外,检查框还有一种不确定状态,这时检查框呈灰色显示,不能 

接受用户的输入,以表明控件是无效的或无意义的。按钮控件会向父窗口发出控件通知消息, 

主要的通知消息如表 5…8 所示的。  



                                                                  ·111 ·  


…………………………………………………………Page 121……………………………………………………………

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



    表 5…8                    按钮控件的通知消息  



              消息                                  含义  

 BN_CLICKED                     用户在按钮上单击了鼠标  

 BN_DOUBLECLICKED               用户在按钮上双击了鼠标  



    按钮控件封装在 MFC 的 CButton 类中,CButton 类的成员函数 Create 用于创建按钮控件, 

该函数的声明如下:  



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



    参数 lpszCaption 指定了按钮显示的文本。dwStyle 指定了按钮的风格,主要的按钮风格 

如表   5…9 所示,dwStyle  参数可以是这些风格的组合。rect            说明了按钮的位置和尺寸。 

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

回 TRUE,否则返回 

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

你可能喜欢的