1、改變對話方塊的底色
在對話方塊的類中新增乙個 private : cbrush m_brush;的成員變數。在類的建構函式中新增如下**:
m_brush.createsolidbrush(rgb(0,0,255)); //初始化為藍色
為對話方塊新增乙個wm_ctlcolor訊息響應函式,專門為控制項著色的訊息響應函式,**如下:
hbrush csettingdlg::onctlcolor(cdc* pdc, cwnd* pwnd, uint nctlcolor)
2、如果我們要設定某乙個對話方塊控制項的底色和文字顏色時只要將上面return m_brush;改為:
if (pwnd->getdlgctrlid()==idc_line_style) /*如果控制項的名稱為idc_line_style*/
return hbr; /*否則的話返回系統預設的畫刷控制代碼*/
注意如果要設定單行edit的文字背景色,需要使用setbkcolor設定,而setbkmode即使為透明,文字的背景仍為系統的預設色。
3、利用上面的原理,在對話方塊控制項響應onpaint訊息時,將乙個靜態文字顯示所設定字型的文字。新增乙個靜態文字框,改名為idc_text。新增乙個字型成員變數 private: cfont font;在對話方塊的建構函式中對字型進行初始化: m_font.createpointfont(200,"華文行楷");在2的return hbr;之前加入如下**:
if (pwnd->getdlgctrlid()==idc_text) /*如果為id號所指的靜態文字框*/
注意,因為onpaint訊息響應函式是在控制項被繪製之前觸發的,它所返回的hbrush畫刷控制代碼,便攜帶了我們所設定的這些屬性。
3、如果要改變ok按鈕的文字顏色,靠上面的方式是不行的。我們需要建立乙個新的從cbutton類繼承的ctestbtn類,並用類嚮導新增乙個類的drawitem的虛函式,加入以下**(可以從cbutton的例子中複製):
// todo: add your code to draw the specified item
uint ustyle = dfcs_buttonpush;
// this code only works with buttons.
assert(lpdrawitemstruct->ctltype == odt_button);
// if drawing selected, add the pushed style to drawframecontrol.
if (lpdrawitemstruct->itemstate & ods_selected)
ustyle |= dfcs_pushed;
// draw the button frame.
::drawframecontrol(lpdrawitemstruct->hdc, &lpdrawitemstruct->rcitem,
dfc_button, ustyle);
// get the button's text.
cstring strtext;
getwindowtext(strtext);
// draw the button text using the text color red.
colorref croldcolor = ::settextcolor(lpdrawitemstruct->hdc, rgb(255,0,0));/*設定按鈕的字型為紅色。將返回的原先的顏色暫時儲存*/
::drawtext(lpdrawitemstruct->hdc, strtext, strtext.getlength(),
&lpdrawitemstruct->rcitem, dt_singleline|dt_vcenter|dt_center);
::settextcolor(lpdrawitemstruct->hdc, croldcolor);
然後,右鍵選擇ok按鈕,用嚮導建立乙個關聯的成員變數m_btntest,從新建立的ctestbtn類繼承。在ok按鈕的屬性頁-〉styles-〉owner draw選中,否則ok按鈕仍然繼承預設的cbutton類。
MFC視窗的顏色和字型的設定
1 改變對話方塊的底色 在對話方塊的類中新增乙個 private cbrush m brush 的成員變數。在類的建構函式中新增如下 m brush.createsolidbrush rgb 0,0,255 初始化為藍色 為對話方塊新增乙個wm ctlcolor訊息響應函式,專門為控制項著色的訊息響...
MFC視窗各控制項的顏色和字型的設定
很多人定義了基於mfc的程式專案,當設計介面使用控制項時,卻不知道如何對各控制項進行字型與顏色的設計 其實這些修改是需要動手新增 的,這方面的修改在控制項屬性裡是沒有現成的,這不同於.net定義的專案,它的是有直接屬性修改的。我在原文的基礎上做了修改與完善,也可參見原文 原文 1 改變對話方塊的底色...
MFC設定字型及顏色
設定字型 函式原型 bool createfont int nheight,int nwidth,int nescapement,int norientation,int nweight,byte bitalic,byte bunderline,byte cstrikeout,byte nchars...