通过一个CColorDialog获取用户设定的颜色两个CRichEditCtrl控件,想将一个控件中的文本添加到另一个控件中去,并将新添加的文本的颜色设置为用户通过CColorDialog设定的颜色,代码如下: CRichEditCtrl* edit;
edit=(CRichEditCtrl*)GetDlgItem(IDC_RICHEDIT21);//IDC_RICHEDIT21是最后要显示结果的控件ID
CHARFORMAT   cf;
    cf.cbSize =   sizeof(CHARFORMAT);
    cf.dwMask =   CFM_COLOR   |   CFM_UNDERLINE   |   CFM_BOLD;
    cf.dwEffects =   (unsigned   long)~(   CFE_AUTOCOLOR   |   CFE_UNDERLINE   |   CFE_BOLD);
    cf.crTextColor =color;
UpdateData(true);
UINT nStart=edit->GetTextLength();//现有的文本长度
strText+=strEdit;
UpdateData(false);
UINT nEnd=edit->GetTextLength();//添加文本后的文本长度
edit->SetSel(nStart,nEnd);
edit->SetSelectionCharFormat(cf);//为新添加的文本设定颜色
现在的问题是,为什么我每次添加新的文本后,新文本的颜色被设定成了用户选择的,但是原来的旧文本的颜色就消失了。是不是我哪里理解错了
ps我试了一下,通过手动选择文本的话没有上述问题,希望懂的朋友解释下