按鈕控制項在MFC中使用CButton表示,CButton包含了三種樣式:Push Button,Check Box,Radio Button。
一、靜態控制項 將Toolbox中的Push Button,Check Box,Radio Button控制項拖放到對話方塊中,並使用VisualStudio的Wizard功能關聯CButton變數及添加對應響應事件。 當然,將Button控制項拖放到對話方塊上之後,也可以手動關聯變數及添加事件響應函數。 步驟如下(以Push Button為例): 1.在對話方塊類中添加變數CButton m_btn; 2.關聯變數:在DoDataExchange函數中添加DDX_Control(pDX, IDC_BUTTON1, m_btn); 3.添加訊息映射: 在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之間添加:ON_BN_CLICKED(IDC_BUTTON1, &CTestDlg::OnBnClickedButton1) 並添加對話方塊類的成員函數void CTestDlg::OnBnClickedButton1()。
二、動態建立1.建立CButton執行個體 CButton *p_MyButton = new CButton();2.調用CButton類的Create()函數建立 該函數原型如下: BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID); lpszCaption --- 按鈕上顯示的文本 dwStyle --- 視窗風格,可以是以下風格的組合: 【通用】 WS_CHILD 子視窗,必須有 WS_VISIBLE 視窗可見 WS_TABSTOP 可用Tab鍵切換焦點 WS_GROUP 成組,用於Radio Button按鈕組中的第一個按鈕 WS_DISABLED 禁用視窗 【按鈕專用】 BS_PUSHBUTTON 下壓式按鈕即Push Button BS_AUTORADIOBUTTON 選項按鈕及Radio Button BS_AUTOCHECKBOX 複選按鈕及Check Box rect --- 按鈕的大小和位置 pParentWnd --- 父視窗 nID --- 和按鈕關聯的ID3.添加訊息映射(同上)4.銷毀資源 delete 在CButton類的解構函式中有調用DestroyWindow來釋放和其相關的視窗資源
程式碼範例:
// 建立Push ButtonCButton *m_pMyButton = new CButton();CRect rcBtn(0, 0, 100, 20);m_pMyButton->Create(TEXT("Test"), WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON, rcBtn, this, 1000);// 設定和對話方塊一樣的字型m_pMyButton->SetFont(this->GetFont());// 釋放資源delete m_pMyButton;
三、具體使用細則1.Radio Button的Group規則WS_GROUP風格指定Radio Button組的首個控制項。該控制群組是由這個首控制項和在它之後定義的所有Radio Button組成,直到下一個擁有WS_GROUP風格的Radio Button為止。2.GetCheck與SetCheck功能:擷取及設定Radio Button以及Check Box的選擇狀態int GetCheck( ) const; 傳回值為BST_UNCHECKED,BST_CHECKEDvoid SetCheck(int nCheck); nCheck為BST_UNCHECKED,BST_CHECKED