【MFC】vs2013_MFC使用文件之15.mfc 按鈕CBitmapButton的使用


本文是基於對話框的

博文基於 無幻 的博文為基礎寫的 http://blog.csdn.net/akof1314/article/details/4951836

筆者使用mfc撐死2個星期,不過這是有c++基礎的前提下接觸mfc,昨天看到了網上對qt creator的評論,感覺好高大上,回去試了一下后發現,qt需要mfc的基礎,若是直接接觸qt的話會比較難,畢竟mfc是在vs的平台下,大家學起來會比較順手。

回到正題,今天研究了下怎么使用mfc中的位圖按鍵,發現實現方法挺多,但是對於小白來說,很多作者認為簡單的都會略過,恰巧那些簡單的就是我不會的,結果又看不懂。除了mfc自有的CBitmapButton外,在網上還看到有關於CButtonST的使用,應該是會比CBitmapButton簡單,筆者看的是CBitmapButton,那這里就不講CButtonST。

兩位csdn博主對CButtonST使用的鏈接:

DoubleLi:  http://www.cnblogs.com/lidabo/archive/2012/12/17/2821122.html

wqvbjhc:  http://blog.csdn.net/wqvbjhc/article/details/12580669

 

首先 會用到以下CBitmapButton類的函數

LoadBitmaps(IDB_UP, IDB_DOWN, IDB_FOCUS,IDB_DISABLE);

//載入圖片 IDB_UP, IDB_DOWN, IDB_FOCUS,IDB_DISABLE 這四個均為bitmapID

BOOL LoadBitmaps( 
   LPCTSTR lpszBitmapResource, 
   LPCTSTR lpszBitmapResourceSel = NULL, 
   LPCTSTR lpszBitmapResourceFocus = NULL, 
   LPCTSTR lpszBitmapResourceDisabled = NULL  
); 
bitmap的載入

回到資源視圖就可以看到  資源視圖打開的方法:視圖-》其他窗口-》資源視圖

 
        

SubclassDlgItem(按鈕ID, this);//關聯按鈕

SizeToContent();//讓按鈕隨圖片大小變化

GetDlgItem(按鈕ID)->EnableWindow(FALSE);//開啟按鈕的禁止狀態

 

現在開始做

1.在對話框出拖入一個按鈕,,其ID為IDC_BUTTON1

2.設置按鈕屬性中的Owner Draw為TRUE 

3.在::OnInitDialog();前添加   CBitmapButton m_btnX1;//必須放在函數外面才能正常實現  

4.導入按鈕位圖,這里四幅圖大小要一致,以下是四種狀體的按鈕,若讀者要實驗這次的設計的話,可以右鍵另存為,然后用“畫圖”把png格式的另存為bmp格式的。在資源視圖,右鍵“添加資源”,“導入”以下圖片:

5.初始化工作,在對話框的OnInitDialog()函數里面添加以下代碼:

m_btnX1.LoadBitmaps(IDB_UP, IDB_DOWN, IDB_FOCUS,IDB_DISABLE);//
// 也可以只加一個ID資源;
m_btnX1.SubclassDlgItem(IDC_BUTTON_TEST2, this);
m_btnX1.SizeToContent();

到這里已經完成了位圖按鈕的實現,編譯運行可以看到結果。

其實這個時候你能看到后三幅圖的的效果,為什disable的看不到,是因為這個禁止的狀態你沒有打開,打開需要

GetDlgItem(按鈕ID)->EnableWindow(FALSE);  //為false是是開啟禁止狀態,為true時則是關閉狀態

這時候四個圖標你都能看到了。

如果你想做鼠標移動到按鈕上,按鈕會變其他圖案的效果,請看 無幻 http://blog.csdn.net/akof1314/article/details/4951836/;

 

本文用到的資料:  只想說一句 csdn太強大了。

http://blog.csdn.net/leixiaohua1020/article/details/12753967
http://blog.csdn.net/akof1314/article/details/4951836/
http://bbs.csdn.net/topics/100184465
https://msdn.microsoft.com/en-us/library/6y6acs49(v=vs.120).aspx

 


免責聲明!

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



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