簡介
類CButton提供了對Windows按鈕控制項的操作。按鈕控制項是一個小的矩形子視窗,可以通過單擊選中(按下)或不選中。按鈕可以單獨使用,也可以成組使用,它還可以具有文本標題。在用戶單擊它的時候,按鈕通常要改變顯示外觀。
詳細資訊
典型的按鈕控制項有:複選框、單選鈕和下壓式按鈕(push button)。一個CButton對象可以是它們中的一種,這由它的按鈕風格和成員函式Create的初始化決定。
既可以從對話框模板中創建一個按鈕控制項,也可以直接在代碼中創建。
無論哪種情況,都要先調用構造函式CButton構造一個CButton對象,然後調用成員函式Create創建Windows按鈕控制項並套用到CButton對象上。
在一個從類CButton派生出來的類中,構造可以一步完成。程式設計師可以為這個派生類編寫一個構造函式,並在其中調用Create函式。
如果想處理Windows的通知訊息,如點陣圖按鈕控制項發給它的父對象(通常是從CDialog繼承來的)的訊息,就要在父對象中加入訊息映射入口以及處理每個訊息的成員函式。
每個訊息映射入口的格式如下:
ON_Notification(id, memberFxn)
其中id指定了傳送通知的控制項的子視窗的ID,而memberFxn指定了處理該通知的父對象中的成員函式名。
父對象的函式原型格式如下:
afx_msg void memberFxn( );
可能的訊息映射入口如下:
映射入口:何時向父對象傳送訊息
ON_BN_CLICKEN :用戶單擊按鈕時回響訊息。
ON_BN_DOUBLECLICKED :用戶雙擊按鈕時回響訊息。
如果在對話框資源中創建了CButton對象,則在用戶關閉該對話框時會自動撤消這個CButton對象。如果在視窗中創建了CButton對象,就可能需要自己撤消它。如果是用new函式在記憶體的堆中創建該對象的,則在用戶關閉該視窗按鈕控制項時,必須用delete函式撤消它。如果在堆疊中創建了該對象,或者它嵌入在父對話框對象中,系統會自動撤消它。
#include <afxwin.h>
成員函式
構造函式
CButton 構造一個CButton對象
初始化函式
Create 創建Windows按鈕控制項並在CButton對象上套用
CButton::Create 創建一個CButton對象
BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );
lpszCaption是按鈕上顯示的文本;
dwStyle指定按鈕風格,可以是按鈕風格與視窗風格的組合,取值有:
視窗風格
WS_CHILD 子視窗,必須有
WS_VISIBLE 視窗可見,一般都有
WS_DISABLED 禁用視窗,創建初始狀態為灰色不可用的按鈕時使用
WS_TABSTOP 可用Tab鍵選擇
WS_GROUP 成組,用於成組的單選按鈕中的第一個按鈕
按鈕風格
BS_PUSHBUTTON 下壓式按鈕,也即普通按鈕
BS_AUTORADIOBUTTON 含自動選中狀態的單選按鈕
BS_RADIOBUTTON 單選按鈕,不常用
BS_AUTOCHECKBOX 含自動選中狀態的複選按鈕
BS_CHECKBOX 複選按鈕,不常用
BS_AUTO3STATE 含自動選中狀態的三態複選按鈕
BS_3STATE 三態複選按鈕,不常用
以上風格指定了創建的按鈕類型,不能同時使用,但必須有其一。
BS_BITMAP 按鈕上將顯示點陣圖
BS_DEFPUSHBUTTON 設定為默認按鈕,只用於下壓式按鈕,一個對話框中只能指定一個默認按鈕
rect指定按鈕的大小和位置;
pParentWnd指示擁有按鈕的父視窗,不能為NULL;
nID指定與按鈕關聯的ID號,用上一步創建的ID號。
返回值:若成功,返回非0;否則返回0 CButton::DrawItem 重載該函式繪製一個CButton對象,由框架調用該函式
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
參數:lpDrawItemStruct指向包含繪製項信息和要求類型的LPDRAWITEMSTRUCT結構的長指針
CButton::SetCheck 設定或復位單選按鈕和複選按鈕的選擇狀態
void SetCheck(int nCheck);
參數:nCheck 指定設定的狀態,0為未選擇,1為選中,2為不確定
操作
GetState 檢索按鈕控制項的選中狀態、加亮狀態和獲得焦點狀態
SetState 設定按鈕控制項的加亮狀態
GetCheck 檢索按鈕控制項的選中狀態
SetCheck 設定按鈕控制項的選中狀態
GetButtonStyle 檢索按鈕控制項的風格
SetButtonStyle 設定按鈕控制項的風格
GetIcon 檢索此前調用SetIcon設定的圖示句柄
SetIcon 指定一個在按鈕上顯示的圖示
GetBitmap 檢索此前調用SetBitmap設定的點陣圖的句柄
SetBitmap 設定在按鈕上顯示的點陣圖
GetCursor 檢索此前調用SetCursor設定的游標圖像的句柄
SetCursor 設定在按鈕上顯示的游標圖像
可覆蓋的函式
DrawItem 可以覆蓋它來繪製自定義的CButton對象