您的位置:首页 > 产品设计 > UI/UE

duilib : write text on richedit

2014-04-06 15:21 851 查看
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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: