VisualC++MFC精多练实现多颜边框的编框CEdit
传统编辑框是没有各种颜的,VC6中实现不同颜的编辑框,也不是大难事。
CEdit类为基类派生CColourEdit类,然后设置WM_CTLCOLOR消息,使用FrameRect函数重绘编辑框的边框。

FrameRect函数原型如下:

void FrameRect(LPCRECT lpRect, CBrush* pBrush);

具体可以查看MSDN里的参考。

新建一个建立对话框的应用程序,向窗体中添加8个编辑框控制。
通过New Class窗口生成一个新类CColourEdit,基类为CEdit。添加一个COLORREF类型的成员变量 m_Colour
1. HBRUSH CColourEdit::CtlColor(CDC* pDC, UINT nCtlColor)
2. {
3.       CDC* dc = GetDC(); //获取画布对象
4.       CRect rect;
5.       GetClientRect(rect); //获取客户区域
6.       rect.InflateRect(1,1,1,1);//将客户区域增大一个像素
7.       CBrush brush (m_Colour);//创建画刷
8.       dc->FrameRect(rect,&brush);//绘制边框
9.
10.       return NULL;
11. }
复制代码
VC++/MFC精讲多练#002:如何改变编辑框CEdit中文字的颜
实现应用中,改变编辑框中文字的颜是很常用的一个技巧,可以使用SetTextColor函数改变编辑框中文本的颜,通过对消息WM_CTLCOLOR的响应函数来实现对SetTextColor函数的调用。在控件被显示之前,WM_CTLCOLOR消息被发送到控件所在的对话框,这个消息的响应函数会修改对话框及其中控件的颜。该消息的响应函数原型为:

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

SetTextColor函数的原型为: virtual COLORREF SetTextColor(COLORREF crColor);

具体参数含义及其取值,请参考MSDN


新建一个基于对话框的MFC应用程序,在窗体上添加1个编辑框控件和8个单选按钮控件。

添加一个COLORREF
1. COLORREF colour;
复制代码
改变COLORREF colour的代码也很简单:
1. void CColourTextDlg::OnRed()
2. {
3.       colour = RGB(255,0,0);
4.       m_edit.SetFocus();
5. }
6.
7. void CColourTextDlg::OnBlue()
8. {
9.       colour = RGB(0,0,255);
10.       m_edit.SetFocus();
11. }
12.
13. ...
复制代码
设置颜:
1. HBRUSH CColourTextDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
2. {
3.       HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
4.      
5.       if(nCtlColor == CTLCOLOR_EDIT)
6.               pDC->SetTextColor(colour);
健康宝边框颜代表什么意思7.       return hbr;
8. }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。