您的位置:首页 > 其它

编辑框 背景颜色 字体设置

2013-10-27 10:49 375 查看
修改文本编辑框边框的颜色是一件比较困难的事情,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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mfc 文本编辑