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

  • Separador de controles para formularios MFC
    Es un control que nos permite mantener ordenado nuestros diálogos mediante lineas divisoras. No hay una variedad de controles para diálogos MFC, pero con esto puedes poner la diferencia.
    Por: ivancp,2004-09-20
  • Hilos en Visual C++ utilizando la clase CWinThread
    Este artículo muestra como implementar hilos/hebras con la clase CWinThread en forma sencilla. El ejemplo pone a prueba la rapidez de tres métodos de ordenamiento ejecutandolos simultáneamente.
    Por: ivancp,2004-03-14
  • HACHA (AXE) Cortador de Archivos
    Es una versión del cortador de archivos Hacha que incluye el código fuente, puedes utilizar el cortador para enviar archivos en medios pequeños.
    Por: Lizardo,2004-03-14
¿Alguna duda? Sientete libre de hacer tus pruntas en nuestro:
foro deVisual C++ »