Para cambiar el color de fondo de una ventana SDI:
1. Abrir el Classwizard en la clase del View SDI Ctrl+W
2. Selecciona la pestaña de Message Maps.
3. Asegurarse de estar en la clase CxxxView.
4. Selecciona el mensaje WM_ERASEBKGND de la lista de mensajes.
5. Click en el boton "Add Function". Luego el ClassWizard agregará la funcion "OnEraseBkgnd".
6. Click en "Edit Code" para ver el codigo de la funcion . Luego agregar el siguiente codigo antes de la linea "return CView::OnEraseBkgnd(pDC)".
- Código: Seleccionar todo
CBrush brNew(RGB(255,0,0)); //rojo
CBrush* pOldBrush = (CBrush*)pDC->SelectObject(&brNew);
CRect rc;
pDC->GetClipBox(rc);
pDC->PatBlt(0,0,rc.Width(),rc.Height(),PATCOPY);
pDC->SelectObject(pOldBrush);
return TRUE;
Para cambiar el color de fondo de un dialogo:1. Agregar una variable miembro a la clase del dialogo:
- Código: Seleccionar todo
class CMiDialogo : public CDialog
{
...
protected:
CBrush m_brush;
...
};
2. Agregar esta linea en la funcion OnInitDialog del mensaje WM_INITDIALOG
- Código: Seleccionar todo
BOOL CMiDialogo::OnInitDialog()
{
...
m_brush.CreateSolidBrush(RGB(255, 0, 0)); // rojo
...
}
3. Agregar la funcion para el mensaje WM_CTLCOLOR y hacer algo como:
- Código: Seleccionar todo
HBRUSH CMiDialogo::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
return m_brush;
}
4. Listo!
PD: Espero que funcione por que no siempre me todo el tiempo de hacerlo tan detallado.