一, 自繪按鈕圖形:
方法一:
1、 在資源編輯的時候選中按鈕的 Owner draw 屬性,改爲true.
2、 在程序中定義一個CBitmapButton成員變量。
注意:不能使用ClassWizard爲按鈕映射一個CButton變量,然後改爲CBitmapButton,
這麼做並不能將按鈕直接映射爲CBitmapButton類的對象,反而會出現初始化錯誤
3、 使用CBitmapButton::LoadBitmaps裝載各種狀態的圖片,
使用CBitmapButton::SubclassDlgItem 關聯到想要的按鈕,
使用 CBitmapButton::SizeToContent函數使按鈕適合圖片大小。
注意Loadbitmaps一定要在關聯到按鈕之前進行!
附:添加資源Bitmap的方法:Insert菜單-->Resource -->Resource type:Bitmap-->Import,
之後選擇所需的圖片就可以了
方法一的例子:
首先,選中按鈕的owner Draw屬性,在資源中加載兩副*.bmp 格式的位圖,
然後在對話框類中加入:
Code---
CBitmapButton m_btnX1;
//定義變量,必須放在函數外面才能正常實現
BOOL CXXXXXXX::OnInitDialog()
{
CDialog::OnInitDialog();
m_btnX1.LoadBitmaps(IDB_XXXX_UP,IDB_XXXX_DOWN);
//這裏是兩副位圖,鼠標按下和彈起,也可以只加一個ID資源;
m_btnX1.SubclassDlgItem(IDC_DASEN_X1,this);
m_btnX1.SizeToContent();
}
方法二:使用CBitmapButton::AutoLoad函數關聯到想要的按鈕
A、使用CBitmapButton::AutoLoad函數之前不能使用CBitmapButton::LoadBitmaps裝載
各種狀態的圖片,否則會出錯。
B、AutoLoad函數完成關聯和改變按鈕大小的功能。類似於上面 CBitmapButton::SubclassDlgItem
和 CBitmapButton::SizeToContent函數的功能。
C、 CBitmapButton::AutoLoad使用的位圖是默認資源ID的,即它會自動裝載相關資源位圖。
位圖的資源ID格式爲:
"按鈕Caption+U"、"按鈕Caption+D"、"按鈕Caption+F"、"按鈕Caption+X",
分別代表Up、Down、Focus、Disable狀態。
如資源編輯時,希望關聯的按鈕的Caption爲Test,
那麼其默認裝載的位圖資源的ID爲:"TestU"/"TestD"/"TestF"/"TestX",
注意分號""也是其ID的一部分。
方法二例子:
首先,選中按鈕的 Owner Draw屬性爲true
其次,添加兩個位圖資源,並修改其ID分別 爲:"myBitmapButtonU"和"myBitmapButtonD",這裏只添加兩個位圖
然後在對話框類中加入:
CBitmapButton m_btnX1;//必須放在函數外面才能正常實現
BOOL CXXXXXXX::OnInitDialog()
{
CDialog::OnInitDialog();
m_btnX1.AutoLoad(IDC_BUTTON1,this);//ID爲IDC_BUTTON1的按鈕即爲你需要自繪的按鈕
}