你是要修改选择文字的底色还是整个RichEdit窗口的底色。

解决方案 »

  1.   

    void CRichTestView::OnInitialUpdate()
    {
        CRichEditView::OnInitialUpdate();#ifdef _USE_FOR_ONLYTEXT
        // 如果是要设置所有文字的底色但不是窗口底色;
        CHARFORMAT2 CharFormat;
        ZeroMemory(&CharFormat, sizeof(CHARFORMAT2));
        CharFormat.cbSize = sizeof(CHARFORMAT2);
        CharFormat.dwMask = CFM_BACKCOLOR;
        CharFormat.crBackColor = RGB(255, 0, 0);    SendMessage(EM_SETCHARFORMAT, (WPARAM)SCF_ALL, (LPARAM)&CharFormat);
    #else
        // 如果是要设置窗口底色;
        SendMessage(EM_SETBKGNDCOLOR, 0, (LPARAM)RGB(255, 0, 0));
    #endif
        // Set the printing margins (720 twips = 1/2 inch).
        SetMargins(CRect(720, 720, 720, 720));
    }
      

  2.   

    注意,极有可能你没有
        ZeroMemory(&CharFormat, sizeof(CHARFORMAT2));
    在WINDOWS的API中有许多使用结构指针作参数的函数需要将结构先清零,否则API的行为会未知!
    有时可能导致页面访问错或其他错误!