mfc的button控制項是乙個不同於其他控制項,其cbuttton類是cwnd的乙個子類,在修改button的背景、顏色和邊框的時候必須自己進行編寫乙個新的類,如cmybutton。下面是進行背景、顏色、邊框修改的步驟:
1.在專案->新增類->cmybutton。這樣會自動生成兩個檔案,乙個.cpp檔案和乙個.**件。例如cmybutton.cpp和cmybutton.h
2.在你的主介面的標頭檔案中新增對cmybutton.h的包含,即 #include 「cmybutton.h」
3.在對應的cpp檔案中找到oninitdialog()函式,在該函式裡面新增如下**:
//定義乙個cmybutton的變數,可以在其他地方進行定義,只需要包含 「cmybutton.h」即可
cmybutton m_btntestresult;
//將按鈕修改為bs_ownerdraw風格,允許button的採用自繪模式
getdlgitem
(idc_button_testresult)
->
modifystyle(0
, bs_ownerdraw,0)
;//繫結控制項idc_button1與類cmybutton,響應過載函式drawitem()
m_btntestresult.
attach
(idc_button_testresult,
this);
//設定buttondown的背景色,setdowncolor()和setupncolor()是cmybutton類中的析構函式
m_btntestresult.
setupcolor
(rgb
(240
,240
,240))
;//240,240,240是介面顏色,可以使按鈕同主介面顏色一致
m_btntestresult.
setdowncolor
(rgb
(240
,240
,240))
;
注:若控制項idc_button1在以前進行過訊息繫結,那麼就會出現bug,只需要在對映函式dodataexchange()中將訊息繫結的語句注釋掉就行了。如下:
//ddx_control(pdx, idc_button_testresult, m_btntestresult);
4.在新建的cmybutton.cpp檔案和cmybutton.**件中新增下面**即可:
.h
#pragma once
#include
class
cmybutton
:public cbutton
;
.cpp
#include
"stdafx.h"
#include
"cmybutton.h"
cmybutton::
cmybutton
(void
)cmybutton::
~cmybutton
(void
)bool cmybutton::
attach
(const uint nid, cwnd* pparent)
void cmybutton::
setdowncolor
(colorref color)
void cmybutton::
setupcolor
(colorref color)
void cmybutton::
drawitem
(lpdrawitemstruct lpdrawitemstruct)
else
//當按鈕不操作或者彈起時if(
(lpdrawitemstruct-
>itemstate&ods_selected)
&&(lpdrawitemstruct-
>itemaction&
(oda_select | oda_drawentire)))
if(!(lpdrawitemstruct-
>itemstate&ods_selected)
&&(lpdrawitemstruct-
>itemaction& oda_select)
) dc.
detach()
;}}
注:這樣新增會使按鈕無法顯示,只需要把cmybutton m_btntestresult;宣告移動到你主介面的標頭檔案中即可
5這樣設定以後,按鈕的seticon方法無法呼叫,在按鈕屬性介面設定可以新增icon仍無反應,但是setwindowtext可以正常使用,所以我呼叫了setupcolor(cmybutton裡自己定義的方法),滿足條件切換rgb
MFC按鈕控制項(Button)
按鈕控制項的主要方法和事件見mfc 程式開發參考大全 p186 p188 下面是乙個例項,用按鈕來實現顯示位圖 顯示圖示 顯示滑鼠影象和選中按鈕的功能,步驟如下 1 建立乙個基於對話方塊的應用程式 2 向對話方塊中新增乙個複選按鈕 乙個單選按鈕控制項和5個按鈕控制項,為按鈕控制項新增變數,分別為m ...
MFC透明BUTTON 按鈕 控制項
簡要步驟 1.新增gdi 支援 1 stdafx.h中新增 include using namespace gdiplus 2 在所在類中新增成員 ulong ptr m gdiplustoken 3 在initinstance函式中新增 initialize gdi gdiplus gdiplus...
MFC自繪Button按鈕分析和實現
對於按壓式的button按鈕,wm ctlcolor無法完成按鈕控制項的背景顏色和字型顏色修改,若想要完成外觀定製需要新增wm drawitem訊息或者重寫cbutton類中的drawitem函式完成按鈕外觀修改,下面逐一介紹。自繪製知識基礎 自繪製需要的兩個基礎步驟 1.控制項型別設定為 bs o...