#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? Возможно, это может быть стирание того, что вы рисуете?