MFC去除button按鈕的邊框以及改變按鈕顏色

2021-10-10 20:06:08 字數 2375 閱讀 3308

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...