CBitmapButton的使用
CBitmapButton作為MFC的控件類,并不為很多人所使用,因為現(xiàn)在網(wǎng)上遍布著從CButton派生的各種各樣的按鈕類,其中最為著名的就是CButtonST類了。但是最近在CSDN上看到幾個問題都是使用CBitmapButton類,但是由于使用錯誤、不當而造成程序崩潰或者錯誤的。所以總結(jié)一下CBitmapButton類的使用,希望能幫助一些初學者。
可以參考MSDN自帶的例子“CTRLTEST”學習CBitmapButton的用法。個人總結(jié)如下:
1、在資源編輯的時候選中按鈕的Owner draw即可,不需要選擇Bitmap屬性!
2、在程序中定義一個CBitmapButton成員變量。不能使用ClassWizard為按鈕映射一個CButton變量,然后改為CBitmapButton,這么做并不能將按鈕直接映射為CBitmapButton類的對象,反而會出現(xiàn)初始化錯誤。
3-1、使用CBitmapButton::LoadBitmaps裝載各種狀態(tài)的圖片,使用SubclassDlgItem關(guān)聯(lián)到想要的按鈕,使用CBitmapButton::SizeToContent函數(shù)使按鈕適合圖片大小。。注意Loadbitmaps一定要在關(guān)聯(lián)到按鈕之前進行!
3-2、或者是使用CBitmapButton::AutoLoad函數(shù)關(guān)聯(lián)到想要的按鈕。需要注意:
A、之前不能使用CBitmapButton::LoadBitmaps裝載各種狀態(tài)的圖片,否則會出錯。
B、AutoLoad函數(shù)完成的關(guān)聯(lián)和改變按鈕大小的CBitmapButton::SizeToContent函數(shù)的功能。
C、CBitmapButton::AutoLoad使用的位圖是默認資源ID的,即它會自動裝載相關(guān)資源位圖。位圖的資源ID格式為:"按鈕Caption+U"、"按鈕Caption+D"、"按鈕Caption+F"、"按鈕Caption+X",分別代表Up、Down、Focus、Disable狀態(tài)。如資源編輯時,希望關(guān)聯(lián)的按鈕的Caption為Test,那么其默認裝載的位圖資源的ID為:"TestU"/"TestD"/"TestF"/"TestX",注意分號""也是其ID的一部分。