CStatic de colores en Visual C++
Para lograr este resultado la clase basada en CStatic implementa un nuevo comportamiento en la asignación de colores utilizando el mensaje WM_CTLCOLOR:
- Code: Seleccionar todo
- HBRUSH bpCstmLabel::CtlColor(CDC* pDC, UINT nCtlColor)
- {
- // El pincel se destruye automáticamente al salir de la función
- CBrush Brush;
- // Estas lineas solo trabajan sobre Win9x
- // Sobre WinNT no se nota el Color... asi
- // que haremos unos cambios...
- /*
- Brush.CreateSolidBrush( BackColor );
- CBrush *OldBrush = pDC->SelectObject( &Brush );
- pDC->SetBkColor( BackColor );
- pDC->SetTextColor( ForeColor );
- */
- // Este es un metodo mas directo... para WinNT
- // Este color es la brocha general..
- HBRUSH mBrush = (HBRUSH )::CreateSolidBrush( BackColor );
- // Establecer Pincel.
- HBRUSH *OldBrush = (HBRUSH*)pDC->SelectObject( &Brush );
- // Seleccionamos el color del fondo al texto
- pDC->SetBkColor( BackColor );
- // Seleccionamos el color del texto
- pDC->SetTextColor( ForeColor );
- return (HBRUSH) mBrush ;
- }
Modo de uso
Para poder utilizar esta clase en Visual C++, pueden seguir los siguientes pasos:
- Agregar los archivos bpCstmLabel.h y bpCstmLabel.cpp al proyecto (Menu: Project >Add to project >Files).
- Instanciar los controles Static con la clase bpCstmLabel utilizando ClassWizard, tambien este procedimiento se puede hacer escribiendo el codigo necesario.
- Pueden cambiar los colores directamente, por ejemplo:
- Code: Seleccionar todo
- m_label.BackColor = RGB( 255 , 0 , 0 ); // Rojo
- m_label.ForeColor = RGB( 0 , 0 , 255 ); // Azul
- Ejecutar!
Otros Artículos en esta sección
-
Esta es una alternativa que no necesita programar o integrar el código con tu proyecto basado en MFC Visual C++ o incluso otros lenguajes.Tutorial paso a paso para crear una aplicación basada en dialogo utilizando las librerías MFC con Visual C++ 2010Es un tutorial sobre como implementar una calculadora científica desde cero con Visual C++ con MFC. También se implementa el calculo de algunas funciones matemáticas.¿Alguna duda? Sientete libre de hacer tus pruntas en nuestro:
foro deVisual C++ »