MFC 设置编辑框风格

来源:互联网 发布:淘宝零食店怎么开 编辑:程序博客网 时间:2024/05/04 21:27

MFC编程中有时需要限制字符输入的类型,长度等。还可以设置不同颜色来提示。


1.首先需要自建一个新的类,插入--类--然后自己新建一个类,可以取名为CNewEdit,基类为CEdit。

2.在类视图里找到CNewEdit,然后为它添加WM_CHAR事件。添加如下代码

if((nChar>=0x30&&nChar<=0x39)||nChar==0X08){CEdit::OnChar(nChar, nRepCnt, nFlags);}

这样就限制新的类只能输入数字和回车了,也可以设置成16进制等等。

将新类的头文件添加到Dlg的cpp文件中。

3.为控件添加控制变量

打开类视图,找到添加的编辑框ID,然后为它添加变量如m_MyEdit,变量类型选择新建的类CNewEdit,2005以上版本需要自己手动输入,下拉框中没有,然后策略那里选择控制变量。这样重新编译后编辑框就只能输入数字了。

4.限制输入长度

在初始化函数中添加如下代码

m_MyEdit.LimitText(10);

这样编辑框就只能输入10个字符了

5.输入的字符颜色

为dlg添加OnCtlColor事件

HBRUSH CMy_PCSCDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);// TODO: Change any attributes of the DC here// TODO: Return a different brush if the default is not desiredreturn hbr;}

然后在里面添加代码

if((pWnd->GetDlgCtrlID() == IDC_EDIT_UART)){pDC->SetTextColor(RGB(255,0,0));}

这样输入的字符就是红色了。

也可以用标志位来实现颜色变换

switch(Result_Color){case BLACK:if(pWnd->GetDlgCtrlID() == IDC_STATIC_RESULT){pDC->SetTextColor(RGB(0,0,0));pDC->SelectObject(&m_font);}break;case GREEN:if(pWnd->GetDlgCtrlID() == IDC_STATIC_RESULT){pDC->SetTextColor(RGB(0,255,0));pDC->SelectObject(&m_font);}break;case RED:if(pWnd->GetDlgCtrlID() == IDC_STATIC_RESULT){pDC->SetTextColor(RGB(255,0,0));pDC->SelectObject(&m_font);}break;default:break;}

这样在程序中更改Result_Color的值后再写入新的数据就会是新的颜色了。


原创粉丝点击