FAQ:WinAPI VCPP:закрасить фон окна CWnd — различия между версиями

Материал из Весельчак У
Перейти к: навигация, поиск
Строка 1: Строка 1:
 
=== Как закрасить фон окна CWnd?  ===
 
=== Как закрасить фон окна CWnd?  ===
  
<br>Нужно добавить обработчик сообщения WM_CTLCOLOR&nbsp;
+
<br>Нужно добавить обработчик сообщения WM_CTLCOLOR&nbsp;  
  
 
+
<br>
<pre>class CMyDialog : public CDialog
+
<pre> class CMyDialog&nbsp;: public CDialog
 
{
 
{
//
+
//
 
  CBrush m_back_brush;
 
  CBrush m_back_brush;
 
  ...
 
  ...
Строка 28: Строка 28:
 
//и красный цвет текста
 
//и красный цвет текста
 
pDC-&gt;SetTextColor(RGB(255,0,0));
 
pDC-&gt;SetTextColor(RGB(255,0,0));
//надо же что-то вернуть :)
+
//надо же что-то вернуть&nbsp;:)
 
return (HBRUSH) (m_back_brush.m_hObject);
 
return (HBRUSH) (m_back_brush.m_hObject);
 
}
 
}
Строка 42: Строка 42:
 
//фон по умолчанию
 
//фон по умолчанию
 
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
 
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
 +
 
}</pre>
 
}</pre>
 
<br>
 
<br>

Версия 20:32, 3 октября 2008

Как закрасить фон окна CWnd?


Нужно добавить обработчик сообщения WM_CTLCOLOR 


 class CMyDialog : public CDialog
{
//
 CBrush m_back_brush;
 ...
 ...
};

//конструктор
CMyDialog::CMyDialog(): CDialog(CMyDialog::IDD)
{
//создаём кисть фона
m_back_brush.CreateSolidBrush(RGB(192,186,207));
}
HBRUSH CMyDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 

{ switch(nCtlColor) { //CStatic-контрол case WM_CTLCOLORSTATIC: { //у статиков делаем прозрачный фон pDC->SetBkMode(TRANSPARENT); //и красный цвет текста pDC->SetTextColor(RGB(255,0,0)); //надо же что-то вернуть :) return (HBRUSH) (m_back_brush.m_hObject); } break; //диалог case WM_CTLCOLORDLG: { //возвращаем хендл кисти нужного фона return (HBRUSH) (m_back_brush.m_hObject); } break; } //фон по умолчанию return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

}