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
-
Shell para Simulación es una herramienta donde el usuario de manera interactiva puede modelar sistemas reales y definir sus características. La herramienta está orientada a la simulación de sistemas dinámicos y estocásticos que cambian de manera discreta.¿Es posible Incluir todo un proyecto MFC en un solo Archivo? Pues parece que sí, este articulo te muestra como.Este un programa que escribí en Visual C++ en un curso de Investigación Operativa.¿Alguna duda? Sientete libre de hacer tus pruntas en nuestro:

foro deVisual C++ »
