MFC CEdit — рисование фона на части длины

#c #mfc #cedit

#c #mfc #cedit

Вопрос:

Я хотел бы иметь элемент управления CEdit, окрашенный в половину длины фона или в любой другой части его длины.

Я реализовал следующий код

     HBRUSH CMyView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
        HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
    
        if (nCtlColor == CTLCOLOR_EDIT)
        {
    
            if (pWnd->GetDlgCtrlID() == IDC_MY_NORMAL_PERCENT_BOX)
            {
                // Set the text color to red
                pDC->SetTextColor(RGB(255, 0, 0));
    
                CRect rc;
                // Get the client area of the edit control
                m_CTV_Normal_Percent_Box_Ctrl.GetClientRect(amp;rc);
                m_CTV_Normal_Percent_Box_Ctrl.ScreenToClient(amp;rc);
                // Apply the device context to the client area of the edit control
                pDC->Rectangle(0, 0, rc.Width()/2, rc.Height());
    
                // Set the background mode for text to transparent 
                // so background will show thru.
                pDC->SetBkMode(TRANSPARENT);
    
                // Return handle to our CBrush object
                hbr = m_brush;
    
            }
        }

        return hbr;
    }
  

но этого достичь не удалось. Может ли кто-нибудь помочь?

Это то, что я хотел бы получить

введите описание изображения здесь

и это то, что я получаю

введите описание изображения здесь

Заранее спасибо.

Комментарии:

1. «Я потерпел неудачу» — это не постановка проблемы.

2. только что исправили вопрос и политически некорректное утверждение.

3. Жалоба IInspectable была связана не с формулировкой, а с тем фактом, что она не сообщает нам, что происходит сбой. Он вообще рисует? Происходит ли сбой? Как происходит сбой? «это не может быть достигнуто» говорит нам не что иное, как ваша первая формулировка.

4. он рисует весь элемент управления редактированием, но не его часть. Я просто хочу нарисовать, то есть 60 процентов длины, что соответствует некоторой статистике.

5. Возможно. Вы исследовали обработчик erasebackground? Возможно, это может быть стирание того, что вы рисуете?