過載onctlcolor函式,這個是必須的 。
設定控制項的背景顏色:
第一:
afx_msg hbrush onctlcolor(cdc* pdc, cwnd* pwnd, uint nctlcolor);//在標頭檔案中宣告
在主檔案中
第二:begin_message_map(cok1dlg, cdialog)
//}afx_msg_map
end_message_map()
第三:加這個函式
hbrush ctesdlg::onctlcolor(cdc* pdc, cwnd* pwnd, uint nctlcolor)
break;
case ctlcolor_listbox://列表框
break;
case ctlcolor_dlg : //對話方塊
break;
case ctlcolor_edit : //文字編輯框
break;
default:
break;
return hbr;
} }
控制項參考:
#define ctlcolor_msgbox 0
#define ctlcolor_edit 1
#define ctlcolor_listbox 2
#define ctlcolor_btn 3
#define ctlcolor_dlg 4
#define ctlcolor_scrollbar 5
#define ctlcolor_static 6
#define ctlcolor_max 7
#if(winver >= 0x0400)
#define color_3ddkshadow 21
#define color_3dlight 22
#define color_infotext 23
#define color_infobk 24
#endif /* winver >= 0x0400 */
#if(winver >= 0x0500)
#define color_hotlight 26
#define color_gradientactivecaption 27
#define color_gradientinactivecaption 28
#if(winver >= 0x0501)
#define color_menuhilight 29
#define color_menubar 30
#endif /* winver >= 0x0501 */
#endif /* winver >= 0x0500 */
#if(winver >= 0x0400)
#define color_desktop color_background
#define color_3dface color_btnface
#define color_3dshadow color_btnshadow
#define color_3dhighlight color_btnhighlight
#define color_3dhilight color_btnhighlight
#define color_btnhilight color_btnhighlight
另外,有的控制項不在上面定義之中,這時要改變就需要獲得控制項的id來改變,具體如下(上面的也可以用下面的這種方法來實現)
首先還是要過載onctlcolor函式
然後if(pwnd->getdlgctrlid()==yourid//你想改變的控制項id)
return hbr;
這樣就可以實現了 ,很簡單吧!
VC之列表控制項背景色設定
本文簡單介紹下vc程式中list列表控制項的背景設定。首先,新建對話方塊應用程式,然後新增兩個list列表控制項 自定義clistctrl類並重寫列表oncustomdraw函式。在mfc中找不到nm customdraw,只好手動新增了。標頭檔案 protected afx msg private...
EDIT控制項設定字型,背景色
截獲wm ctlcolorstatic訊息 gdiplus bitmap pbitmap gdiplus bitmap cmiuiutils loadimage idb png license bg if pbitmap null lresult onctlcolor uint umsg wpara...
MFC 控制項背景色
由於需要,要講groupbox控制項和文字控制項static的背景色設為一致。onctrlcolor中設定groupbox背景色 if pwnd getdlgctrlid idc g if pwnd getdlgctrlid idc static1 設定後效果 有個白色背景不符合要求 需要新增此句 ...