二 VC中Edit背景色方法一 利用向导映射CParentDlg的WM_CTLCOLOR消息,产生函数:HBRUSH CParentDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);pDC是AboutDlg的设备上下文,pWnd是CParentDlg中发送该消息的control指针,nCtlColor市Control的类型编码。对其进行如下修改:
HBRUSH CAboutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if ((pWnd->GetDlgCtrlID() == IDC_EDIT1) && (nCtlColor == CTLCOLOR_EDIT))
{
COLORREF clr = RGB(255,0,0);
pDC->SetTextColor(clr); //设置红色的文本
clr = RGB(0,0,0);
pDC->SetBkColor(clr); //设置黑色的背景
m_brMine = ::CreateSolidBrush(clr);
return m_brMine; //返回的是背景色对应的刷子句柄
}
else
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
return hbr;
}
} 方法二 自定义一个CColorEdit类,该类从CEdit派生,重写该类的OnCtlColor消息(如方法一),对使用背景色的Edit控件,将其声明为CColorEdit的类,则该Edit控件就能定制背景色和前景色了。参考:http://www.360doc.com/relevant/22592397_more.shtml
本文介绍两种在Visual C++中自定义Edit控件背景色的方法:一是通过映射WM_CTLCOLOR消息并修改OnCtlColor函数;二是创建自定义CColorEdit类继承自CEdit,并重写OnCtlColor消息。
4956

被折叠的 条评论
为什么被折叠?



