VC OnCtlColor函式來修改控制項背景顏色

2021-08-20 06:08:23 字數 2058 閱讀 5183

在mfc類庫提供了cwnd::onctlcolor函式,在工作框架的子視窗被重畫時將呼叫該成員函式.因此可以過載wm_ctlcolor訊息的響應函式.此函式的原型:

afx_msg hbrush onctlcolor(cdc *pdc,cwnd *pwnd,uint nctlcolor);

引數nctlcolor用於指定控制項的型別,可以是:

.ctlcolor_btn按鈕控制項   //(注意check box 屬於button控制項)

.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:透明

1.為對話方塊類新增wm_ctlcolor的響應函式afx_msg hbrush onctlcolor(cdc*pdc,cwnd*pwnd,uint nctlcolor)

2.定義乙個m_brush(cbrush型別)的成員變數和乙個m_font(cfont型別)成員變數,在建構函式中初始化,例如:m_brush.createsolidbrush(rgb(0,0,255));m_font.createpointfont(200,"華文行楷");

3.改變背景顏色和文字顏色和字型:在onctlcolor()新增**:

if(pwnd->getdlgctrlid()==idc_line_style)

pdc->settextcolor(rgb(255,0,0));

pdc->setbkmode(transparent);//設定文字背景色為透明

pdc->selectobject(&m_font);//設定字型

return m_brush;//設定控制項背景顏色

//對於按鈕來說上面的方法無效

if(pwnd->getdlgctrlid()==idc_sysfontsample)

{// 設定控制項背景色與背景顏色一致

colorref bkcolor = rgb(239,239,239); //背景的顏色值

pdc->setbkcolor(bkcolor);

return (hbrush)::getstockobject(null_brush); 

使用函式來處理資料

sql支援利用函式來處理資料。函式一般是在資料上執行的,它給資料的轉換和處理提供了方便。函式的可移植性 函式沒有sql可移植性強,能執行在多個系統的 成為可移植的 protable 先對來說,多數sql語句是可移植的,在sql實現之間有差異時,這些差異通常不那麼難處理。而函式的可移植性卻不強。幾乎每...

js使用函式來建立物件

js程式設計 es5中沒有class類,只有function,es6向後端靠攏,才出現了類 function people this.eat function 直接這樣使用,this指向window people 使用new關鍵字,會建立物件 var xiaoming new people cons...

memcpy函式 來自百度

原型 extern void memcpy void dest,void src,unsigned int count 用法 include 功能 由src所指記憶體區域複製count個位元組到dest所指記憶體區域。說明 src和dest所指記憶體區域不能重疊,函式返回指向dest的指標。注意 與...