CStatic de colores en Visual C++

Al implementar aplicaciones en Visual C++ muchas veces desea que la interfaz sea agradable y completamente funcional al usuario final. Los controles Static de Visual C++ pueden derivarse y mejorar su funcionalidad. En este caso implementamos un control basado en CStatic para visualizar texto y colores.

MiniSoftColourLabels1.gif
ColourLabels ejecutándose


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
  1.  

  2. HBRUSH bpCstmLabel::CtlColor(CDC* pDC, UINT nCtlColor)

  3. {

  4.     // El pincel se destruye automáticamente al salir de la función

  5.     CBrush Brush;    

  6.     // Estas lineas solo trabajan sobre Win9x

  7.     // Sobre WinNT no se nota el Color... asi

  8.     // que haremos unos cambios...

  9.  

  10.     /*

  11.     Brush.CreateSolidBrush( BackColor );

  12.     CBrush *OldBrush = pDC->SelectObject( &Brush );

  13.     pDC->SetBkColor( BackColor );

  14.     pDC->SetTextColor( ForeColor );

  15.     */

  16.  

  17.     // Este es un metodo mas directo... para WinNT

  18.  

  19.     // Este color es la brocha general..

  20.     HBRUSH mBrush = (HBRUSH )::CreateSolidBrush( BackColor );

  21.     // Establecer Pincel.

  22.     HBRUSH *OldBrush = (HBRUSH*)pDC->SelectObject( &Brush );

  23.     // Seleccionamos el color del fondo al texto

  24.     pDC->SetBkColor( BackColor );

  25.     // Seleccionamos el color del texto

  26.     pDC->SetTextColor( ForeColor );    

  27.  

  28.     return (HBRUSH) mBrush ;

  29. }




Modo de uso


Para poder utilizar esta clase en Visual C++, pueden seguir los siguientes pasos:

  1. Agregar los archivos bpCstmLabel.h y bpCstmLabel.cpp al proyecto (Menu: Project >Add to project >Files).
  2. Instanciar los controles Static con la clase bpCstmLabel utilizando ClassWizard, tambien este procedimiento se puede hacer escribiendo el codigo necesario.
    MiniSoftColourLabels2.gif
    Agregando una variable a una clase utilizando el asistente
  3. Pueden cambiar los colores directamente, por ejemplo:

    Code: Seleccionar todo
    1.     m_label.BackColor = RGB( 255 , 0 , 0 ); // Rojo

    2.     m_label.ForeColor = RGB( 0 , 0 , 255 ); // Azul

    3.  

  4. Ejecutar!

Archivos Adjuntos

Otros Artículos en esta sección

¿Alguna duda? Sientete libre de hacer tus pruntas en nuestro:
foro deVisual C++ »