首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

动态的输入编辑框一行字符,根据情况不同,要求字符的颜色不同,如何实现

2012-08-17 
动态的输入编辑框一行字符,根据情况不同,要求字符的颜色不同,怎么实现?就是说,编辑框中显示很多行,每行都

动态的输入编辑框一行字符,根据情况不同,要求字符的颜色不同,怎么实现?
就是说,编辑框中显示很多行,每行都是动态输入的,根据事件的成功与否,每次输入的字符的颜色要不同。怎么实现?
在显示的函数中,我用的是:
  str = "\r\n";
buffer1 += buffer;
buffer1 += str;
  GetDlgItem(IDC_EDIT_INFORMATION)->SetWindowText(buffer1);
将颜色的设置放到了,OnCtlColor函数中,结果输入的颜色都一样,没有变化。
怎么解决这个问题呢?

[解决办法]
要使用richedit富文本编辑控件来实现的!
[解决办法]
这个问题我解决过
1.首先添加richedit控件,并添加控制变量m_richdiffMerge。
2.然后在CXXXAPP.CPP文件的InitInstance()函数里面加AfxInitRichEdit();这一句,否则你的richedit控件是不能显示的
3.其次定义一个改变richedit控件颜色的函数
int SetTextColor(CRichEditCtrl& the_richedit, int min, int max)
{
// 声明并设置要设置的类型
CHARFORMAT* lpcf = new CHARFORMAT;
lpcf->cbSize = sizeof(CHARFORMAT);
lpcf->dwMask = CFM_COLOR;
lpcf->dwEffects = NULL;
lpcf->crTextColor = RGB(255, 0, 0);
// 要改变颜色的区域
CHARRANGE rg;
rg.cpMin = min;
rg.cpMax = max;
// 选定要改变的区域
the_richedit.SendMessage(EM_EXSETSEL, 0, (LPARAM) (CHARRANGE FAR *) &rg);
// 改变颜色
HRESULT hr = the_richedit.SendMessage(EM_SETCHARFORMAT, (WPARAM) (UINT) SCF_SELECTION, (LPARAM) lpcf);

// 释放资源
delete lpcf;
return 0;
}
4.最后是使用这个函数来实现颜色的变化
str = "\r\n";
buffer1 += buffer;
buffer1 += str;
SetTextColor(m_richdiffMerge,buffer.GetLength(),buffer1.GetLength());
即可

热点排行