VC 點陣圖按鈕CBitmapButton的使用

無幻發表於2020-04-04

系統環境:Windows 7
軟體環境:Visual C++ 2008 SP1
本次目的:使用點陣圖按鈕,並且設定按鈕的滑鼠懸停效果

      在用MFC開發時,介面是比較不好開發的一塊。VC中自帶了CBitmapButton類,但是用途不多,網上很多Button類的派生類蠻實用的,但是若是簡單的點陣圖按鈕用自帶的CBitmapButton就可以實現了,以下是效果圖:

步驟一:新建基於對話方塊工程,放置一個按鈕,可以適當調整大小,設定其Owner Draw屬性為TRUE,右鍵為按鈕新增變數,改變其變數型別為CBitmapButton,按確定完成;

步驟二:匯入按鈕點陣圖,這裡四幅圖大小要一致,以下是四種狀體的按鈕,若讀者要實驗這次的設計的話,可以右鍵另存為,然後用“畫圖”把png格式的另存為bmp格式的。在資源檢視,右鍵“新增資源”,“匯入”以下圖片:

步驟三:初始化工作,在對話方塊的OnInitDialog()函式裡面新增以下程式碼:

步驟四:為控制點陣圖按鈕的可用、不可用新增程式碼,這是為了驗證第四種狀態的按鈕:

步驟五:到這裡已經完成了點陣圖按鈕的實現,編譯執行可以看到結果。但是滑鼠滑過的時候,按鈕並不會感應到焦點的存在。這裡用定時器捕獲焦點在按鈕上,並且改變此時的按鈕狀體為第三種圖片。首先為窗體新增OnTimer()事件,在OnTimer()函式裡面填寫如下程式碼:

最後在對話方塊的OnInitDialog()函式裡面新增開啟定時器,時間間隔200ms足夠了。

完成後,執行就可實現與文章開頭所示的圖片一樣的效果。


2012年5月7日 《對CBitmapButton的擴充套件

相關文章