改變mfc對話方塊背景色、控制項內的字型顏色和背景色
中天數字
c 設定 dialog, group box, static text, check box, edit ctrl(disabled), combo box(disabled), radio button等背景色
編寫wm_ctlcolor訊息的對映函式onctlcolor(cdc *pdc, cwnd pwnd, uint nctlcolor)
加入如下**:
colorref backcolor = rgb(216, 231, 252) //office 2003背景色
pdc->setbkmode(transparent);
//設定控制項背景透明
return createsolidbrush(backcolor);
//建立背景刷子
---- 方法二:過載onpaint(),即wm_paint訊息。有關**如下(以上例工程為準):
void cexampledlgdlg::onpaint()
---- 方法三:過載onctlcolor (cdc* pdc, cwnd* pwnd, uint nctlcolor),即wm_ctlcolor訊息。具體 步驟如下(以上例工程為準):
---- ①在cexampledlgdlg的標頭檔案中,新增一cbrush的成員變數:
class cexampledlgdlg : public cdialog
;---- ②在oninitdialog()函式中新增如下**:
bool cexampledlgdlg::oninitdialog()
---- ③利用classwizard過載onctlcolor(…),即wm_ctlcolor訊息:
hbrush cexampledlgdlg::onctlcolor
(cdc* pdc, cwnd* pwnd, uint nctlcolor)
---- 方法四:還是過載onctlcolor (cdc* pdc, cwnd* pwnd, uint nctlcolor),即wm_ctlcolor訊息。 具體步驟如下(以上例工程為準):
---- 步驟①、②同上方法三中的步驟①、②。
---- 步驟③利用classwizard過載onctlcolor(…)(即wm_ctlcolor訊息)時則有些不同:
hbrush cexampledlgdlg::onctlcolor
(cdc* pdc, cwnd* pwnd, uint nctlcolor)
---- 編譯並執行即可。
---- 關於如何改變對話方塊背景顏色的問題,可能還有很多種不同方法可以實現,筆者在這僅舉出四種常見 的方法。其中方法三的程式設計似乎有點不太規範,方法四則要比方法三正統些,筆者這樣的對比舉例是為了 拓寬vc程式設計愛好者特別是初學者的程式設計思路,讀者可以根據實際情況選用其中的一種。如果再結合《軟體 報》2023年第5期中改變對話方塊上的控制項顏色,相信會使您的mfc應用程式"增色"不少。
另外一種就是用
bool cbpcallview::onerasebkgnd(cdc* pdc)
bool chardwaremessage::onerasebkgnd(cdc* pdc)
mfc改變控制項內的字型顏色和背景色
2010-11-26 13:25
在mfc類庫提供了cwnd::onctlcolor函式,在工作框架的子視窗被重畫時將呼叫該成員函式.因此可以過載wm_ctlcolor訊息的響應函式.此函式的原型:
afx_msg hbrush onctlcolor(cdc *pdc,cwnd *pwnd,uint nctlcolor);
引數nctlcolor用於指定控制項的型別,可以是:
.ctlcolor_btn
按鈕控制項
.ctlcolor_dlg
對話方塊.ctlcolor_edit
編輯框.ctlcolor_listbox
列表控制項
.ctlcolor_msgbox
訊息控制項
.ctlcolor_scrollbar滾動條控制項
.ctlcolor_static
靜態控制項
[程式實現]
假設你已有了名為my的對話方塊工程.你有了乙個static的控制項,id為idc_static1.
hbrush cmydlg::onctlcolor(cdc* pdc, cwnd* pwnd, uint nctlcolor)
// todo: return a different brush if the default is not desired
return hbr;
}
如果要指定某個特定控制項可以這樣寫:id為idc_static1
if(pwnd->getdlgctrlid()==idc_static1)
else
return hbr;
【注】
black_brush:黑色
white_brush:白色
gray_brush:灰色
null_brush:透明
hollow_brush:透明
改變對話方塊的預設背景色
法一在對話方塊的wm paint訊息的響應處理函式onpaint 中進行繪製背景色。法二響應對話方塊的wm ctlcolor訊息,在訊息處理函式onctlcolor中進行繪製。onpaint法 1 新建乙個基於對話方塊的mfc應用程式changebgcolortest1。2 開啟changebgco...
MFC 控制項背景色
由於需要,要講groupbox控制項和文字控制項static的背景色設為一致。onctrlcolor中設定groupbox背景色 if pwnd getdlgctrlid idc g if pwnd getdlgctrlid idc static1 設定後效果 有個白色背景不符合要求 需要新增此句 ...
改變對話方塊背景色,對話方塊內文字的顏色與背景色
利用classwizard過載onctlcolor 即wm ctlcolor訊息 改變對話方塊背景色,文字顏色及背景色 hbrush selsamplesdlg onctlcolor cdc pdc,cwnd pwnd,uint nctlcolor todo 如果預設的不是所需畫筆,則返回另乙個畫筆...