现在的位置: 首页 > 综合 > 正文

MFC 设置编辑框风格

2018年04月17日 ⁄ 综合 ⁄ 共 1228字 ⁄ 字号 评论关闭

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 desired
	return 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的值后再写入新的数据就会是新的颜色了。

抱歉!评论已关闭.