mfc - تريد أن تظهر مربع ملون حول التحكم ريشيديت في مفك في وقت التشغيل



background-color richedit-control (1)

قد تكون هناك طريقة أفضل لتحقيق ذلك، ولكن يجب أن يعمل ما يلي. إذا كنت تستمد الطبقة الخاصة بك من كريتديتكترل، يمكنك الاستفادة من رسالة WM_NCPAINT لتقديم الحدود. شيء مثل…

void RichEdit::OnNcPaint()
    {
    CPaintDC dc(this); // device context for painting
    CRect rect;
    GetWindowRect(&rect);
    ScreenToClient(rect);

    CPen pen;
    pen.CreatePen(PS_SOLID, 10, RGB(255, 255, 0));
    dc.SelectObject(pen);
    dc.Rectangle(&rect);

    CHARFORMAT cf = { 0 };
    int txtLen = GetTextLength();

    cf.cbSize = sizeof(cf);
    cf.dwMask = CFM_ITALIC;

    SetSel(txtLen, -1); ReplaceSel("Some text"); 

    // Apply formating to the just inserted text.
    SetSel(txtLen, GetTextLength());
    SetSelectionCharFormat(cf);
    SetFocus();

    // Do not call CRichEditCtrl::OnNcPaint() for painting messages
    }

سوف تجعل الحدود كما الأصفر، وكتابة النص المقابل. وإليك ما سيبدو.

لدي تطبيق مفك. لدي بعض الضوابط ريشديت على الحوار. أريد أن تظهر إطار ملون أصفر ملون حول الضوابط. ما هي الطريقة للقيام بذلك؟

حاولت إنشاء واحد أكثر تحرير تحرير غنية حول ريتشيديت كترل الموجودة واستخدام سيتباكغروندكولور على متغير، ولكن الألوان المنطقة بأكملها وغيرها من ريترديت كترلز تصبح غير مرئية. أيضا، أريد تغيير اللون المحيط في وقت التشغيل. الرجاء مساعدتي. أنا عالقة مع هذا.