编辑框 背景颜色 字体设置

来源:互联网 发布:php记事本编写软件 编辑:程序博客网 时间:2024/04/30 14:01

修改文本编辑框边框的颜色是一件比较困难的事情,MFC提供的CEdit类只提供了对文本编辑框的功能操作,外观设置是MFC控件管理类的共同弱点,没有办法,我们只能自己重载CEdit类来修改边框颜色。
1、创建CEdit的派生类CDrawEdit
class CDrawEdit : public CEdit
{
DECLARE_DYNAMIC(CDrawEdit)

public:
CDrawEdit();
virtual ~CDrawEdit();
protected:
DECLARE_MESSAGE_MAP()
};
2、设置边框颜色
因为文本编辑框的边框是在非客户区域,所以要重载OnNcPaint()函数。
void CDrawEdit::OnNcPaint()
{
CRect rc;
GetWindowRect(&rc);
CRect rcWindow(0,0,rc.Width(),rc.Height());

CBrush brushFrame;
brushFrame.CreateSolidBrush(RGB(255,0,0));

CWindowDC dc(this);
dc.FrameRect(&rcWindow,&brushFrame);
}
可以定义一个成员变量来保存画刷的颜色值,定义一个成员函数设置此值,这样就可以通过函数来灵活的这是各种边框颜色。

文本颜色和文本字体以及文本编辑框的背景色可以在父类的OnCtlColor中设置
HBRUSH CMFCDlgDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

if (pWnd->GetDlgCtrlID() == IDC_MYEDIT)
{
pDC->SetTextColor(RGB(0,0,255)); //设置字体颜色
pDC->SelectObject(&m_Font); //设置字体样式

//设置背景色
pDC->SetBkMode(TRANSPARENT);
return CreateSolidBrush(RGB(0,255,0));
}

return hbr;
}

 

==============

CFont m_EditFontTime;

//编辑框内容设置字体---------------------------------------


m_EditFontTime.CreateFont(120, 0, 0, 0, 700,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FF_SWISS, _T("楷体"));
CEdit *m_EditTime=(CEdit *)GetDlgItem(IDC_EDIT1);
m_EditTime->SetFont(&m_EditFontTime);
CFont m_EditFontTime;

//编辑框内容设置字体---------------------------------------


m_EditFontTime.CreateFont(120, 0, 0, 0, 700,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FF_SWISS, _T("楷体"));
CEdit *m_EditTime=(CEdit *)GetDlgItem(IDC_EDIT1);
m_EditTime->SetFont(&m_EditFontTime);
原创粉丝点击