below code from duiilib''s qqDemo
void CxxDlg::WriteContent()
{
std::wstring strMsg = L"";
CHARFORMAT2 cfTitle;
CHARFORMAT2 cfText;
ZeroMemory(&cfTitle, sizeof(CHARFORMAT));
cfTitle.cbSize = sizeof(CHARFORMAT);
cfTitle.dwMask = CFM_BOLD | CFM_COLOR | CFM_FACE |CFM_SIZE;
cfTitle.dwEffects = 1;
cfTitle.yHeight = 16*16;//文字高度
cfTitle.crTextColor = RGB(128, 128, 128); //文字颜色
_tcscpy(cfTitle.szFaceName, L"微软雅黑");//设置字体
ZeroMemory(&cfText, sizeof(CHARFORMAT));
cfText.cbSize = sizeof(CHARFORMAT);
cfText.dwMask = CFM_COLOR | CFM_FACE |CFM_SIZE;
cfText.dwEffects = 1;
cfText.yHeight = 14*14;//文字高度
cfText.crTextColor = RGB(128, 128, 128); //文字颜色
_tcscpy(cfText.szFaceName, L"微软雅黑");//设置字体
m_pRichEdit->SetFocus();
m_pRichEdit->SetSelectionCharFormat(cfTitle);
strMsg = ns_base::StringFormatV(L"当前版本: %s\r\n", m_strVersionCur.c_str());
m_pRichEdit->SetSel(-1, -1);
m_pRichEdit->ReplaceSel(strMsg.c_str(), false);
m_pRichEdit->SetSelectionCharFormat(cfTitle);
strMsg = ns_base::StringFormatV(L"新版本: %s\r\n", m_strVersionNew.c_str());
m_pRichEdit->SetSel(-1, -1);
m_pRichEdit->ReplaceSel(strMsg.c_str(), false);
m_pRichEdit->SetSelectionCharFormat(cfTitle);
m_pRichEdit->SetSel(-1, -1);
m_pRichEdit->ReplaceSel(L"最后一次的升级内容:\r\n", false);
m_pRichEdit->SetSelectionCharFormat(cfText);
m_pRichEdit->SetSel(-1, -1);
m_pRichEdit->ReplaceSel(m_strContentUpdate.c_str(), false);
m_pRichEdit->EnableScrollBar(true, false);
}
Effect:
每次附加一段文字, 都必须要顺序执行 SetSelectionCharFormat, SetSel, ReplaceSel
即使要附加的文字格式都相同, 否则字体就变成了默认的格式.
m_pRichEdit->SetSelectionCharFormat(cfText);
m_pRichEdit->SetSel(-1, -1);
m_pRichEdit->ReplaceSel(m_strContentUpdate.c_str(), false);