在线等,vc2005 MFC对话框,如何设置文本框字体颜色,有人说用OnCtlColor函数,这个系统函数怎么生成的?

在线等,vc2005 MFC对话框,如何设置文本框字体颜色,有人说用OnCtlColor函数,这个系统函数怎么生成的?,第1张

响应WM_CTLCOLOR即可。

1.可使用类向导添加OnCtlColor()函数

2.可手动添加OnCtlColor()函数

在.h文件中添加函数声明:

afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

在.cpp文件中添加:

BEGIN_MESSAGE_MAP(CDefinedViewDlg, CDialog)

...

ON_WM_CTLCOLOR()

...

END_MESSAGE_MAP()

//函数实现

HBRUSH CXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

{

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

if (pWnd->GetDlgCtrlID()==IDC_E_TEST) //控件ID

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

return hbr

}

通过ClassWizard添加WM_CTLCOLOR消息。

2.

在添加的OnCtlColor函数里添加如下代码:

if

(pWnd->GetDlgCtrlID()==IDC_EDIT1)

//IDC_EDIT1为控件ID

pDC->SetBkColor(RGB(255,0,255))

在生成的类中添加重载的虚函数OnCtlColor(CDC

*pDC,CWnd *pWnd,UINT nCtlColor)。

可以在该函数中设置pDC->SetBkMode(TRANSPARENT)将文本的背景设置为透明。

可以在该函数中设置pDC->SetTextColor(RGB(255,0,0))将文本的颜色设置为红色。

也可以指定某一静态文本的字体颜色,可以加如下判断:

switch(pWnd->GetDlgCtrlID())

{

case IDC_INFO:

pDC->SetBkMode(TRANSPARENT)

pDC->SetTextColor(RGB(255,0,0))

}

这个判断,可以仅仅将ID号为IDC_INFO的静态文本的字体颜色设置为红色。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11465843.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存