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對點陣圖對象的實現有些不同。

相關詞條

熱門詞條

聯絡我們