我們有時希望對應按鈕的不同狀態,按鈕可以有不同的顯示形式。比如通常情況下按鈕的四種狀態
正常顯示 (Up) 鼠標按下(Down) 獲得焦點(Focus) 不可用(Disable)
因此可以用四張位圖來對應這四種狀態,我們不需要爲每一種狀態單獨加載位圖,只需要利用
CBitmapButton類即可
總共有兩種方法實現:
下面先說第一種:
假如有四張位圖:IDB_BMP_UP IDB_BMP_DOWN IDB_BMP_FOCUS IDB_BMP_DISABLE
給對話框添加一個CBitmapButton類的對象 m_bmpBtn;
在對話框上方一個按鈕 ID : IDC_BTN_IMG 設置Owner draw屬性
然後在OnInitDialog中:
m_bmpBtn.LoadBitmaps( IDB_BMP_UP,IDB_BMP_DOWN,IDB_BMP_FOCUS,IDB_BMP_DISABLE);
m_bmpBtn.SubclassDlgItem( IDC_BTN_IMG , this );即可
其中SubclassDlgItem(UINT nID, CWnd* pParent)用來將m_bmpBtn和IDC_BTN_IMG關聯起來
第二種方法:
用AutoLoad(UINT nID, CWnd* pParent),顧名思義,就是自動爲按鈕加載位圖
可是光看這個函數似乎跟位圖 並沒有扯上關係啊???
這就需要從位圖的命名上下功夫了,直接使用上面的位圖是不可以的,需要重新命名一下
假如按鈕的caption爲:image(一定要有) 則四張位圖分別爲:
"imageU" "imageD" "imageF" "imageX"
注意四張位圖的的ID 是有雙引號的