FC的CButton类封装了按钮控件。CButton类的成员函数Create负责创建按钮控件,该函数的声明为
BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );
参数lpszCaption指定了按钮显示的正文。dwStyle指定了按钮的风格,如表6.4所示,dwStyle可以是这些风格的组合。rect说明了按钮的位置和尺寸。pParentWnd指向父窗口,该参数不能为NULL。nID是按钮的ID。如果创建成功,该函数返回TRUE,否则返回FALSE.
表6.4 按钮的风格
控件风格
含义
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,不过控件有三种状态:选择、未选择和变灰。
除了上表中的风格外,一般还要为控件指定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。
对于用对话框模板编辑器创建的按钮控件,可以在控件的属性对话框中指定表6.4中列出的控件风格。例如,在命令按钮的属性对话框中选择Default button,相当于指定了BS_DEFPUSHBUTTON。
CButton类的主要的成员函数有:
UINT GetState( ) const;
该函数返回按钮控件的各种状态。可以用下列屏蔽值与函数的返回值相与,以获得各种信息。
0x0003。用来获取检查框或单选按钮的状态。0表示未选中,1表示被选中,2表示不确定状态(仅用于检查框)。
0x0004。用来判断按钮是否是高亮度显示的。非零值意味着按钮是高亮度显示的。当用户点击了按钮并按主鼠标左键时,按钮会呈高亮度显示。
0x0008。非零值表示按钮拥有输入焦点。
void SetState( BOOL bHighlight );
当参数bHeightlight值为TRUE时,该函数将按钮设置为高亮度状态,否则,去除按钮的高亮度状态。
int GetCheck( ) const;
返回检查框或单选按钮的选择状态。返回值0表示按钮未被选择,1表示按钮被选择,2表示按钮处于不确定状态(仅用于检查框)。
void SetCheck( int nCheck );
设置检查框或单选按钮的选择状态。参数nCheck值的含义与GetCheck返回值相同。
UINT GetButtonStyle( ) const;
获得按钮控件的BS_XXXX风格。
void SetButtonStyle( UINT nStyle, BOOL bRedraw = TRUE );
设置按钮的风格。参数nStyle指定了按钮的风格。bRedraw为TRUE则重绘按钮,否则就不重绘。
HBITMAP&n