57上位机VC MFC编辑框文本颜色任意设置
57上位机VC MFC编辑框文本颜色任意设置
功能展示
在实际的应用程序当中,多种场合下都有改变编辑框内文字颜色的功能,如果密码输入错误可以设置文字为红色提醒用户,输入正确则还原默认颜色,如何实现编辑框内字体颜色任意修改?我们当前例程就实现这一功能,效果如图 要点提示 改变编辑框文本的颜色,可以通过Cedit的设备上下文类CDC中SetTextColor()函数来实现,在对话框中要使用这个函数生效,我们得在对话框的OnCtlColor()中对Cedit类的CDC函数SetTextColor()进行调用;在对话框中,控件被显示之前,我们的操作系统都会发送WM_CTLCOLOR消息到对话框程序中,也就是会调用OnCtlColor()函数;这个函数会修改对话框及其所包含的控件的颜色; afx_msg HBRUSH OnCtlColor( CDC* pDC, CWnd* pWnd, UINT nCtlColor ); pDC为指向绘图设备的指针; pWnd为指向具体的控件的指针; nCtlColor 为控件的类型,具体类型有CTLCOLOR_BTN Buttoncontrol
CTLCOLOR_DLG Dialog box ;CTLCOLOR_EDIT Edit control; CTLCOLOR_LISTBOX List-boxcontrol;
CTLCOLOR_MSGBOX Message box; CTLCOLOR_SCROLLBAR Scroll-bar control;CTLCOLOR_STATIC Static control ;
实现功能 1.新建基于对话框的应用程序 2.拖拽一个编辑框控件用于显示文本;添加一个颜色用变量COLORREF m_Color;用于设置文本的颜色;添加几个radio button控件用于设置编辑框不同的文本颜色,给这几个按钮关联函数如我们例程void CGkbc8Dlg::OnGray() {m_Color = RGB(119,136,153);GetDlgItem(IDC_EDIT1)->Invalidate();} ;
3.最后实现OnCtlColor()函数 - <div>HBRUSH CGkbc8Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) </div><div>{</div><div>HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);</div><div>if(nCtlColor == CTLCOLOR_EDIT)</div><div>pDC->SetTextColor(m_Color);</div><div>return hbr;</div><div>}</div>
复制代码当然你还得往编辑框添加些文字,才能进行编辑框字体颜色任意设置功能效果的观察
我们来演示功能的实现过程
|