MFC中 給按鈕添加圖片的方法


方法一:直接給CButton加圖片。

1.在資源編輯器中添加一個按鈕,把它的Bitmap屬性設為true

2.在按鈕上點右鍵,添加一個變量m_Btn(CButton類型的)

3.將圖片導入到資源管理器中,ID為IDB_BITMAP1

4.然后在初始化中加入如下代碼:

   HBITMAP hBmp=::LoadBitmap(AfxGetInstanceHandle(),  MAKEINTRESOURCE(IDB_BITMAP1));   
   m_Btn.SetBitmap(hBmp);
 
   如果是加載非資源圖片的話,就在初始化中加入下代碼:
   HBITMAP hBitmap = (HBITMAP)::LoadImage( 
                 NULL,  
                 "E://a.bmp",                       // 圖片全路徑 
                 IMAGE_BITMAP,                   // 圖片格式 
                 0,0,  
                 LR_LOADFROMFILE|LR_CREATEDIBSECTION);  // 注意LR_LOADFROMFILE

   然后獲得按鈕句柄並調用SetBitmap即可。

這樣按鈕上的文字就被圖片取而代之了,但是我感覺不太好看。

 

方法二:利用CBitmapButton,可以很容易地做出點動態的效果。

1.在資源編輯器中添加一個按鈕.

     把它的Owner Draw屬性設為true.

     把它的ID設為IDC_BUTTON1.

     把它的Caption改成BITMAP_BUTTON

2.准備4張圖片(只准備其中一兩張也可以),添加到資源管理器中

     正常狀態時的按鈕圖片     的ID設為"BITMAP_BUTTONU"

     鼠標按下時的按鈕圖片     的ID設為"BITMAP_BUTTOND"

     鼠標點擊過后的按鈕圖片  的ID設為"BITMAP_BUTTONF"

     按鈕失效后的圖片          的ID設為"BITMAP_BUTTONS"

     注意:一定要左右都帶雙引號!

     其實就是 "按鈕的Caption+U或D或F或S"

3.在dlg的頭文件里添加一個CBitmapButton類型的成員變量m_bbtn

4.在初始化中加入以下代碼

   m_bbtn.AutoLoad(IDC_BUTTON1, this);
 
注意:如果對按鈕(CButton)用向導添加了Control變量的話,把DDX_Control(pDX, IDC_BUTTON1, m_btn1);這一行注釋掉就可以了。
 
方法三:使用CMFCButton
    1、在對話框編輯界面中,拖入一個button控件,改資源ID號為IDC_BUTTON_TEST。
    2、然后在CXXXDlg::OnInitDialog()中添加如下代碼:
       CMFCButton * button1 = new CMFCButton;
       button1->Create(_T("Test Button"),
       WS_VISIBLE,
       CRect(160, 15, 280, 150),
       this,
       IDC_BUTTON_TEST);
       // 加載圖片
       button1->SetImage(IDB_BITMAP1);     //IDB_BITMAP1為自己導入的圖片的ID
 
  運行會發現出現了兩個按鈕,那么在對話框編輯界面中把Button1的Visible屬性設為False便可以了。
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM