传统编辑框是没有各种颜的,VC6中实现不同颜的编辑框,也不是大难事。
以CEdit类为基类派生CColourEdit类,然后设置WM_CTLCOLOR消息,使用FrameRect函数重绘编辑框的边框。
FrameRect函数原型如下:
void FrameRect(LPCRECT lpRect, CBrush* pBrush);
具体可以查看MSDN里的参考。
新建一个建立对话框的应用程序,向窗体中添加8个编辑框控制。
通过New Class窗口生成一个新类CColourEdit,基类为CEdit。添加一个COLORREF类型的成员变量 m_Colour。
以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:
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小时内删除。
发表评论