m_richEdit.SetBackgroundColor(FALSE,RGB(255,0,0));

解决方案 »

  1.   

    您好!非常感谢您的答复!
    可能您误解了我的意思,我是想对m_richEdit字符串中指定的部分进行设置背景颜色 以区分于其他的颜色。
    所以使用了:
    m_richEdit.SetSel(1,9);
    m_richEdit.SetSelectionCharFormat(cf);
      

  2.   

    Background color. To use this member, set the CFM_BACKCOLOR flag in the dwMask member. This member is ignored if the CFE_AUTOBACKCOLOR character effect is specified. To generate a , use the macro.
      

  3.   

    这样试下。CHARFORMAT2 cf;
    ZeroMemory(&cf, sizeof(CHARFORMAT2));
    cf.cbSize = sizeof(CHARFORMAT2);cf.dwMask = CFM_COLOR|CFM_BACKCOLOR|CFM_BOLD|CFM_FACE;
    cf.dwEffects &= ~CFE_AUTOCOLOR;
    cf.dwEffects &= ~CFE_AUTOBACKCOLOR;
    strcpy(cf.szFaceName,_T("黑体"));//设置字体
    cf.crBackColor=RGB(255,0 , 0); //背景颜色为红色
    cf.crTextColor=RGB(0, 0, 0); //文字白色
    UpdateData(TRUE);
    m_richcstring="十一快乐还是不快乐";//是m_richEdit的CString 类型的值
    UpdateData(FALSE);
    m_richEdit.SetSel(1,9);
    m_richEdit.SetSelectionCharFormat(cf);
      

  4.   


    非常感谢您的回答~!
    直接用您的代码
    结果是 只能显示背景 看不见文字~
    我稍作修改以后,如下所示:
    cf.dwMask = CFM_BACKCOLOR;
    //cf.dwEffects &= ~CFE_AUTOCOLOR;
    //cf.dwEffects &= ~CFE_AUTOBACKCOLOR;
    //cf.dwMask = CFM_COLOR;
    strcpy(cf.szFaceName,_T("黑体"));//设置字体
    cf.crBackColor=RGB(0,0,255); //背景颜色为红色
    cf.crTextColor = RGB(0, 0, 0); //文字白色
    背景颜色改变了 文字也可以显示出来但是 文字的颜色没有改变?
    不知道是怎么回事,请您务必指教一下 非常感谢!
    我从早晨一直搞到现在 就差这一步了  如果既能够显示背景颜色 也能够显示文字的颜色 那就可以了!!
    我在线期待您的回复!谢谢您~!祝您万事如意!
    全家幸福!
    阿弥陀佛!
      

  5.   

    白色就3个255啊,低级错误。cf.crTextColor = RGB(255, 255, 255); //文字白色
      

  6.   

    补充,如果我要同时对,一大段不同的文字进行关键字处理,怎样才能让两个不同的关键字段,同时显示不同的背景颜色?我按照此法,只有第一部分生效,后面的都不好使,不知道怎么回事?!
    CHARFORMAT2 cf;
    ZeroMemory(&cf, sizeof(CHARFORMAT2));
    cf.cbSize = sizeof(CHARFORMAT2);
     
    cf.dwMask = CFM_COLOR|CFM_BACKCOLOR|CFM_BOLD|CFM_FACE;
    cf.dwEffects &= ~CFE_AUTOCOLOR;
    cf.dwEffects &= ~CFE_AUTOBACKCOLOR;
    strcpy(cf.szFaceName,_T("黑体"));//设置字体
    cf.crBackColor=RGB(255,0 , 0); //背景颜色为红色
    cf.crTextColor=RGB(0, 0, 0); //文字白色
    UpdateData(TRUE);
    m_richcstring="十一快乐还是不快乐";//是m_richEdit的CString 类型的值
    UpdateData(FALSE);
    m_richEdit.SetSel(1,9);
    m_richEdit.SetSelectionCharFormat(cf);
    //设置另外一段关键字
    m_richEdit.SetSel(10,12);
    cf.crBackColor=RGB(0,0 , 255); //背景颜色为蓝色
    cf.crTextColor=RGB(0, 0, 0); //文字白色
    m_richEdit.SetSelectionCharFormat(cf);
    //结果是只有第一部分有用其他的都不好用。不同同时设置吗?不可能吧?!
      

  7.   

    我发现通过这样的设置可以 同时显示背景和文字颜色
    CHARFORMAT2 cf;
    ZeroMemory(&cf, sizeof(CHARFORMAT2));
    cf.cbSize = sizeof(CHARFORMAT2);
    //cf.dwMask = CFM_COLOR|CFM_BACKCOLOR|CFM_BOLD|CFM_FACE;
    cf.dwMask = CFM_BACKCOLOR|CFM_COLOR;;
    //cf.dwEffects &= ~CFE_AUTOCOLOR;
    //cf.dwEffects &= ~CFE_AUTOBACKCOLOR;
    //cf.dwMask = CFM_COLOR;
    strcpy(cf.szFaceName,_T("黑体"));//设置字体
    cf.crBackColor=RGB(0,255,0); //背景颜色为绿色
    cf.crTextColor = RGB(0, 0, 0); //文字为黑色
    但是 在设置另外的关键字部分时 不生效
    这有第一次设置的有效第二次不生效 不知道为啥。。
      

  8.   

    以下代码实现的是这个效果,你自己看着改了.
    CHARFORMAT2 cf;
    LPCTSTR lpszStr = TEXT("中国CSDN论坛\nhttp://bbs.csdn.net/\n");void CRichDlg::OnBnClickedButton1()
    {
    memset(&cf, 0, sizeof(cf) );
    cf.cbSize = sizeof(cf);
    cf.dwMask = CFM_COLOR|CFM_BOLD|CFM_SIZE|CFM_BACKCOLOR;
    cf.dwEffects &= ~CFE_AUTOCOLOR;
    cf.dwEffects &= ~CFE_AUTOBACKCOLOR;
    cf.dwEffects |= CFE_BOLD;
    cf.crBackColor = RGB(50, 50,120);
    cf.crTextColor = RGB(255,255,255) ;
    cf.yHeight = 512; m_rich.SetSelectionCharFormat(cf);
    m_rich.ReplaceSel(lpszStr);
    cf.crBackColor = RGB(50, 50,255);
    cf.crTextColor = RGB(255,0,0);
    m_rich.SetSel(0,2);
    m_rich.SetSelectionCharFormat(cf); cf.crBackColor = RGB(50, 50,50);
    cf.crTextColor = RGB(0,120,0) ;
    m_rich.SetSel(2,6);
    m_rich.SetSelectionCharFormat(cf); cf.crBackColor = RGB(230, 50,50);
    cf.crTextColor = RGB(0,20,200) ;
    m_rich.SetSel(6,8);
    m_rich.SetSelectionCharFormat(cf); cf.crBackColor = RGB(80, 100,50);
    cf.crTextColor = RGB(0,255,0) ;
    m_rich.SetSel(20,24);
    m_rich.SetSelectionCharFormat(cf);
    }