複製鏈接
請複製以下鏈接發送給好友

CBitmapButton

鎖定
類CBitmapButton用於創建用位圖而不是文本做標籤的按鈕控件。CBitmapButton對象最多可包括4個位圖,分別代表按鈕所處的不同狀態:未按下(或正常)、按下(或選中)、獲得焦點和被禁止存取。只有第一個位圖是必須的,其它三個可以不提供。
外文名
CBitmapButton
性    質
按鈕控件
用    途
創建用位圖而不是文本做標籤
位圖數量
最多可包括4個
位圖按鈕圖像包括圖像本身以及圖像的邊框。邊框在表示按鈕的不同狀態時很有用。例如,按鈕獲得焦點時的位圖與未按下(或正常)狀態的位圖相同,但是在邊框中要麼嵌入了由間斷線組成的矩形,要麼嵌入了由粗實線組成的矩形。禁止存取狀態的按鈕的位圖通常和正常狀態的一樣,但是顏色的對比度較小,就象變灰的菜單選項一樣。
這些位圖的尺寸可以不同,但都當成和正常狀態下位圖一樣的大小處理。
不同的應用對位圖有不同的組合應用。如下所示:
未按下
按下
獲得焦點
禁止存取
應用
類Bitmap
-
-
-
沒有設置WS_TABSTOP的按鈕
-
-
帶有所有狀態的對話框按鈕
設置WS_TABSTOP風格的對話框按鈕
-
在創建一個位圖按鈕控件時,設置BS_OWNERDRAW則指明按鈕是自定義的(用户自己繪製的)。這樣,Windows就會為該按鈕發送WM_MEASUREITEM和WM_DRAWITEM消息,由框架處理這些消息並維護按鈕的外觀。
在窗口的客户區創建一個位圖按鈕的步驟如下:
1.
為按鈕創建1到4個位圖。
2.
構造CBitmapButton對象。
3.
調用Create函數創建Windows按鈕控件,並把它加到CBitmapButton對象上。
4.
調用成員函數LoadBitmaps加載位圖資源。
在對話框控件中包含位圖按鈕的步驟如下:
1.
為按鈕創建1到4個位圖。
2.
創建一個對話框模板,其中有一個自定義的按鈕放在需要位圖按鈕的位置。模板中按鈕的大小無關緊要。
3.
把按鈕的標題設置為“MYIMAGE”一類的字符串,併為按鈕定義一個類似於IDC_MYIMAGE的代號。
4.
在應用的資源腳本中,分別為每個給該按鈕創建的圖像一個ID,ID的值為在步驟3中的標題後加上如下的一個字母——U、D、F或X,分別代表正常、按下、獲得焦點和禁止存取狀態下的按鈕。例如,標題設為“MYIMAGE”時,ID就應該是字符串("MYIMAGEU"、"MYIMAGED"、"MYIMAGEF"和"MYIMAGEX")。位圖的ID必須用引號括起來,否則資源編輯器就會為資源賦上一個整數值,MFC在加載圖像時就會失敗。
5.
在應用的對話框類(從類CDialog繼承而來)中加上一個CBitmapButton成員對象。
6.
在CDialog對象的OnInitDialog例程中調用CBitmapButton對象的AutoLoad函數,參數是按鈕的ID和CDialog對象的this指針。
如果想處理Windows的通知消息,如位圖按鈕控件發給它的父對象(通常是從CDialog繼承來的)的BN_CLICKED消息,就要在從CDialog繼承來的對象中加入消息映射入口以及處理每個消息的成員函數。CBitmapButton對象發出的通知和CButton對象發出的通知一樣。
類CToolBar對位圖對象的實現有些不同。