您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > VC如何改变编辑框的背景颜色方法
VC如何改变编辑框的背景颜色方法这里介绍的改变文本编辑框的背景颜色的方法不需要对CEdit生成新的类,步骤如下:(1)新建一个基于对话框的MFC应用程序,程序名称为Test;(2)在对话框上添加两个文本框,ID分别为IDC_EDIT1和IDC_EDIT2;(3)在CTestDlg的头文件中添加几个成员变量,如下所示;classCTestDlg:publicCDialog{protected:CBrushm_redbrush,m_bluebrush;COLORREFm_redcolor,m_bluecolor,m_textcolor;};(4)在CTestDlg.cpp文件的BOOLCTestDlg::OnInitDialog()中添加以下代码:BOOLCTestDlg::OnInitDialog(){CDialog::OnInitDialog();//Settheiconforthisdialog.Theframeworkdoesthisautomatically//whentheapplication'smainwindowisnotadialogSetIcon(m_hIcon,TRUE);//SetbigiconSetIcon(m_hIcon,FALSE);//Setsmalliconm_redcolor=RGB(255,0,0);//红色m_bluecolor=RGB(0,0,255);//蓝色m_textcolor=RGB(255,255,255);//文本颜色设置为白色m_redbrush.CreateSolidBrush(m_redcolor);//红色背景色m_bluebrush.CreateSolidBrush(m_bluecolor);//蓝色背景色returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}(5)右击对话框空白面,点到右侧属性对话框,点击闪电图标后面的消息图标,为WM_CTLCOLOR添加消息响应函数,编辑代码如下:HBRUSHCTestDlg::OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor){HBRUSHhbr=CDialog::OnCtlColor(pDC,pWnd,nCtlColor);//TODO:ChangeanyattributesoftheDChereswitch(nCtlColor)//对所有同一类型的控件进行判断{//processmyeditcontrolsbyID.caseCTLCOLOR_EDIT:caseCTLCOLOR_MSGBOX://假设控件是文本框或者消息框,则进入下一个switchswitch(pWnd-GetDlgCtrlID())//对某一个特定控件进行判断{//firstCEditcontrolIDcaseIDC_EDIT1://第一个文本框//herepDC-SetBkColor(m_bluecolor);//changethebackground//color[backgroundcolour//ofthetextONLY]pDC-SetTextColor(m_textcolor);//changethetextcolorhbr=(HBRUSH)m_bluebrush;//applythebluebrush//[thisfillsthecontrol//rectangle]break;//secondCEditcontrolIDcaseIDC_EDIT2://第二个文本框//butcontrolisstill//filledwiththebrush//color!pDC-SetBkMode(TRANSPARENT);//makebackground//transparent[onlyaffects//theTEXTitself]pDC-SetTextColor(m_textcolor);//changethetextcolorhbr=(HBRUSH)m_redbrush;//applytheredbrush//[thisfillsthecontrol//rectangle]break;default:hbr=CDialog::OnCtlColor(pDC,pWnd,nCtlColor);break;}break;}//TODO:Returnadifferentbrushifthedefaultisnotdesiredreturnhbr;}注:case的类别有以下几种:CTLCOLOR_BTN按钮控件CTLCOLOR_DLG对话框CTLCOLOR_EDIT编辑框CTLCOLOR_LISTBOX列表框CTLCOLOR_MSGBOX消息框CTLCOLOR_SCROLLBAR滚动条CTLCOLOR_STATIC静态文本以上方法,对只读的编辑框无效!在一位大侠的帮助下,终于找到了改变只读编辑框背景的方法:参考帮助文档“WM_CTLCOLOREDIT”条目下的内容。是说ReadOnly和disabled不发送CTLCOLOR_EDIT。但它发送‘CTLCOLOR_STATIC’。if((nCtlColor==CTLCOLOR_EDIT)||(nCtlColor==CTLCOLOR_STATIC))&&(*pWnd==m_ReadyOnlyEdit){。。。。}但是本方法不适用于多行,继续探索,呵呵~
本文标题:VC如何改变编辑框的背景颜色方法
链接地址:https://www.777doc.com/doc-2866070 .html