使用OnCtlColor函式訊息打造背景

2021-06-13 00:07:17 字數 1728 閱讀 4958

在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                          靜態控制項

為窗體新增該響應訊息,過載onctlcolor函式,下面舉幾個例子說明:

[例1]

為my的對話方塊工程,有乙個static的控制項,id為idc_static1.

hbrush cmydlg::onctlcolor(cdc* pdc, cwnd* pwnd, uint nctlcolor)

return hbr;

}

如果要指定某個特定控制項可以這樣寫:id為 idc_static1

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

else

return hbr;

【注】black_brush:黑色

white_brush:白色

gray_brush:灰色

null_brush:透明

hollow_brush :透明

[舉例2]  為對話方塊設定背景顏色

1. cbrush m_brush;

2. m_brush.createsolidbrush(rgb(255,0,0));

3. hbrush ctest123dlg::onctlcolor(cdc* pdc, cwnd* pwnd, uint nctlcolor)

[舉例3]為對話方塊設定背景

1. cbrush m_brush;

2. cbitmap* pbitmap = new cbitmap;

assert(pbitmap);

pbitmap->loadbitmap(idb_backgroud);

m_brush.createpatternbrush(pbitmap);

3. hbrush ctest123dlg::onctlcolor(cdc* pdc, cwnd* pwnd, uint nctlcolor)

[舉例4]

hbrush ccoloreditboxdlg::onctlcolor(cdc* pdc, cwnd* pwnd, uint nctlcolor)

if (pwnd->getdlgctrlid() == idc_edit2)//第二個編輯框

return hbr;

}

OnCtlColor函式的用法

從函式名易看出,onctlcolor函式的作用是改變 或響應 控制項的顏色 多用在對話方塊應用程式 或基於cformview的應用程式 中,希望在對話方塊顯示時,裡面的控制項的顏色可以設定為我們想要的顏色 在oninitdialog 函式中,我們一般設定好控制項的字型 在onpaint 函式中,用來...

VC 使用OnCtlColor函式來改變控制項顏色

在mfc類庫提供了cwnd onctlcolor函式,在工作框架的子視窗被重畫時將呼叫該成員函式.因此可以過載wm ctlcolor訊息的響應函式.此函式的原型 afx msg hbrush onctlcolor cdc pdc,cwnd pwnd,uint nctlcolor 引數nctlcolo...

使用Bouncy Castle API建立訊息摘要

15.3.1 使用bouncy castle api建立訊息摘要 訊息摘要函式是由org.bouncycastle.crypto.digests包提供的,該包通過與jca一致的方式實現各種訊息摘要演算法。摘 要演算法必須實現orge.bouncycastle.crypto.digest中定義的介面 ...