主对话框上有一个按钮,点击它可以弹出一个对话框,对话框里显示的是一篇文章,现在想将文章中的一个句子标成红色的,应该怎么设置,子对话类的cpp文件中应该写哪几个函数,主对话框类的cpp文件中又应该调用哪几个函数?求各位帮助,谢谢!
我在子对话框类的cpp文件中设置字体和颜色的函数中写的:
int ip1=0;
int ip2=0;
m_CharFormat.cbSize = sizeof(m_CharFormat) +10;
m_CharFormat.crTextColor = RGB(255,0,0);
m_CharFormat.dwEffects = 0;
m_CharFormat.dwMask = CFM_COLOR;
m_REditCtrl.SetSel(ip1,ip2);
m_REditCtrl.SetSelectionCharFormat(m_CharFormat);
在主对话框类cpp文件的按钮响应函数里写的:
int ip1=0;
int ip2=0; if ((ip1 = Quanwen.Find(defineC_152),ip1) != -1)
{
ip2=ip1 + defineC_152.GetLength();
}else
{
write_log("全文中没有找到原句!");
}
运行完后能显示出文章,但是定义的句子变不成红色的。
我在子对话框类的cpp文件中设置字体和颜色的函数中写的:
int ip1=0;
int ip2=0;
m_CharFormat.cbSize = sizeof(m_CharFormat) +10;
m_CharFormat.crTextColor = RGB(255,0,0);
m_CharFormat.dwEffects = 0;
m_CharFormat.dwMask = CFM_COLOR;
m_REditCtrl.SetSel(ip1,ip2);
m_REditCtrl.SetSelectionCharFormat(m_CharFormat);
在主对话框类cpp文件的按钮响应函数里写的:
int ip1=0;
int ip2=0; if ((ip1 = Quanwen.Find(defineC_152),ip1) != -1)
{
ip2=ip1 + defineC_152.GetLength();
}else
{
write_log("全文中没有找到原句!");
}
运行完后能显示出文章,但是定义的句子变不成红色的。
你的ip1和ip2计算的对不?
2. 设置Format
m_CharFormat.crTextColor = RGB(255,0,0);
SetSelectionCharFormat(m_CharFormat);
int ip1=0;
int ip2=0; if ((ip1 = QuanwenShow.Find(defineC_152),ip1) != -1)
{
m_CharFormat.cbSize = sizeof(m_CharFormat) +10;
m_CharFormat.crTextColor = RGB(255,0,0);
m_CharFormat.dwEffects = 0;
m_CharFormat.dwMask = CFM_COLOR;
m_ReditCtrl.SetSel(ip1,ip1 + defineC_152.GetLength());
m_ReditCtrl.SetSelectionCharFormat(m_CharFormat);
}else
{
write_log("全文中没有找到原句!");
}
子对话框的代码该怎么写呢?
可以在子对话框OnInitDialog里加上这段代码,前提是这时已经加载了文章。
void CRichEditCtrl::SetColour(COLORREF color)
{
CHARFORMAT cf;
cf.cbSize = sizeof(CHARFORMAT);
cf.dwMask = CFM_COLOR; GetSelectionCharFormat(cf);
cf.crTextColor = color;
if( cf.dwEffects & CFE_AUTOCOLOR )
{ cf.dwEffects ^= CFE_AUTOCOLOR;
}
SetSelectionCharFormat(cf);
}