您的位置:首页 > 其它

vs2005 mfc_color

2018-02-23 17:13 204 查看
在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)

{

HBRUSH hbr
= CDialog::OnCtlColor(pDC, pWnd,
nCtlColor);

// TODO: Change any attributes
of the DC here

if (nCtlColor==CTLCOLOR_STATIC)


{

pDC-> SetTextColor(RGB(255,0,0));
//字体颜色

pDC-> SetBkColor(RGB(0, 0,
255));
//字体背景色

}
// TODO: Return a
different brush if the default is not
desired
return hbr;

}


如果要指定某个特定控件可以这样写:ID为IDC_STATIC1

if (pWnd-> GetDlgCtrlID()==IDC_STATIC1)

{

pDC-> SetTextColor(
RGB(255,0,0)); //设置字体颜色

pDC-> SetBkMode(TRANSPARENT); //设置字体背景为透明

// TODO: Return a different brush if the default is
not desired

return (HBRUSH)::GetStockObject(BLACK_BRUSH); //
设置背景色
}

else

return hbr;


【注】

BLACK_BRUSH:黑色

WHITE_BRUSH:白色

GRAY_BRUSH:灰色

NULL_BRUSH:透明

HOLLOW_BRUSH :透明
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: