Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


Como cambiar el color de fondo de una ventana

Aqui programadores en la plataforma Win32 con Visual C++ de Microsoft...

Moderador: latindeveloper

Como cambiar el color de fondo de una ventana

Notapor emanuelgcy el Vie Mar 18, 2005 6:26 pm

Hola, queria por favor saber como cambiar el color de fondo de una ventana. Por ejemplo que sea de color celeste.
Desde ya muchas gracias.
emanuelgcy
Usuario Muy Activo
Usuario Muy Activo
 
Mensajes: 112
Registrado: Vie Mar 18, 2005 5:51 pm

Re: Como cambiar el color de fondo de una ventana

Notapor latindeveloper el Sab Mar 19, 2005 11:17 am

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.
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru


Volver a Visual C++

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados