-
CBitmapButton
鎖定
- 外文名
- 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對位圖對象的實現有些不同。
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:8次歷史版本
- 最近更新: 0零度的风