2014-11-01 3 views
0

У меня есть диалог CDialg и CEdit в диалоговом окне. Итак, чтобы нарисовать элемент управления CEdit без подкласса CEdit Class, я использовал CDialog::OnCtlColor вот так.Как я могу нарисовать CEdit Control без раскрытой области?

if(nCtlColor == CTLCOLOR_EDIT) 
{ 
    pDC->SetBkColor(RGB(200, 255, 200)); 
} 

Но, как вы можете видеть, он пропускает некоторую область поля управления редактированием.

Как я могу нарисовать это целое окно Rect of CEdit?

Image

+0

Черт ~ Этот сайт настолько суровый для новичков. : p Я не могу даже сделать снимок? –

+0

слишком много новичков тролли отправляют неподходящий материал (помните, что это сайт, который часто посещают на работе). –

+0

Я понимаю, что Майкл. :) –

ответ

2

Кроме того, необходимо вернуть кисть с правильным цветом, таким образом, создать кисть в диалоговом конструктору

#define EDITCOLOR RGB(200, 255, 200) 
m_brEdit.CreateSolidBrush(EDITCOLOR); 

и в функции OnCtlColor(),

HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); 
if (nCtlColor == CTLCOLOR_EDIT) 
{ pDC->SetBkColor(EDITCOLOR); 
    hbr = m_brEdit; 
} 
return hbr; 
+0

Это работает как сон. Спасибо Эдварду. Я пытался рисовать Edit control через FillSolidRect() в функции раскраски диалогов. :: GetDc(), чтобы получить DC управления редактированием и нарисовать его. Но это очень просто и элегантно. Благодарю. –

+0

Если вы довольны ответом, примите и/или подтвердите ответ - см. Http://stackoverflow.com/help/someone-answers –