我在使用richedit2.0时,用如下的代码,出现情形是,第一行显示比较正常,那个"Pass"会变成蓝色.
但第二行却不会被改变颜色,究竟是哪里出了问题了?
void TestDlg::OnButton1()
{
AddText("micro sd test Pass");
AddText("micro sd test Pass");
}
void TestDlg::AddText(char buf[])
{
CString str;
str = buf;
str +="\r\n";
m_richedit.SetSel(-1, -1);
m_richedit.ReplaceSel(str); CHARFORMAT cf;
ZeroMemory(&cf, sizeof(CHARFORMAT));
cf.cbSize = sizeof(CHARFORMAT);
cf.dwMask = CFM_BOLD | CFM_COLOR | CFM_FACE |
CFM_ITALIC | CFM_SIZE | CFM_UNDERLINE;
cf.dwEffects = 0;
cf.yHeight = 18*18;//文字高度
cf.crTextColor = RGB(0, 0, 255); //文字颜色
strcpy(cf.szFaceName ,_T("Arial"));//设置字体
int iCount = strlen(buf);
m_richedit.SetSel(iCount-6, iCount); //设置处理区域
m_richedit.SetSelectionCharFormat(cf); //自动滚动至最后一行
m_richedit.SendMessage(WM_VSCROLL, SB_BOTTOM, 0);
}
但第二行却不会被改变颜色,究竟是哪里出了问题了?
void TestDlg::OnButton1()
{
AddText("micro sd test Pass");
AddText("micro sd test Pass");
}
void TestDlg::AddText(char buf[])
{
CString str;
str = buf;
str +="\r\n";
m_richedit.SetSel(-1, -1);
m_richedit.ReplaceSel(str); CHARFORMAT cf;
ZeroMemory(&cf, sizeof(CHARFORMAT));
cf.cbSize = sizeof(CHARFORMAT);
cf.dwMask = CFM_BOLD | CFM_COLOR | CFM_FACE |
CFM_ITALIC | CFM_SIZE | CFM_UNDERLINE;
cf.dwEffects = 0;
cf.yHeight = 18*18;//文字高度
cf.crTextColor = RGB(0, 0, 255); //文字颜色
strcpy(cf.szFaceName ,_T("Arial"));//设置字体
int iCount = strlen(buf);
m_richedit.SetSel(iCount-6, iCount); //设置处理区域
m_richedit.SetSelectionCharFormat(cf); //自动滚动至最后一行
m_richedit.SendMessage(WM_VSCROLL, SB_BOTTOM, 0);
}
解决方案 »
- 怎样改变对话框标题栏文字的颜色?
- inno setup 创建菜单项的脚本是怎么样的?
- 晕了,为什么CHAR ABC(8)能出16个字符???
- vc+access,ODBC数据库 movefirst()问题
- 请问怎么样关闭一个文档啊
- 请问如何给Picture控件添加一个WM_LBUTTONDOWN事件?
- 指针参数如何实现地址传递
- 窗口消息的响应?急在线等
- 能不能通过替换dll和vxd等等使win9x支持win2k的raw_socket?
- 潘爱民的《COM原理与应用》VS侯捷译《INSIDE THE C++OBJECT MODEL》结果怎样
- 又一个很棘手的问题,高手请进!
- 请问如何在对话框中加载另一个应用程序啊?
这行代码老是在一处(第一行)处理了,所以永远是第一行有影响,改为:
void TestDlg::AddText(char buf[])
{
CString str;
str = buf;
str +="\r\n";
int nLength = m_richedit.GetTextLength();
m_richedit.SetSel(-1, -1);
m_richedit.ReplaceSel(str); CHARFORMAT cf;
ZeroMemory(&cf, sizeof(CHARFORMAT));
cf.cbSize = sizeof(CHARFORMAT);
cf.dwMask = CFM_BOLD | CFM_COLOR | CFM_FACE |
CFM_ITALIC | CFM_SIZE | CFM_UNDERLINE;
cf.dwEffects = 0;
cf.yHeight = 18*18;//文字高度
cf.crTextColor = RGB(0, 0, 255); //文字颜色
strcpy(cf.szFaceName ,_T("Arial"));//设置字体
int iCount = strlen(buf); m_richedit.SetSel(iCount-6+nLength, iCount+nLength); //设置处理区域
m_richedit.SetSelectionCharFormat(cf); //自动滚动至最后一行
m_richedit.SendMessage(WM_VSCROLL, SB_BOTTOM, 0);}
给分给你.不过在另外一个贴子中还有一个问题呢.