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