[C con Clase] Consulta

Steven Davidson steven en conclase.net
Sab Ene 20 22:05:58 CET 2007


Hola Cristian,

El pasado 2007-01-20 19:53:36, Cristian escribió:

C>             Trabajo en Builder C++.  Y quiero empezar a darle a mis
C> aplicaciones un toque tecnológico. Y no los clásicos botones de Windows

C> quizás alguien que lea las listas pueda tener idea de cómo hacer esto.
C> Ya sea agregando Skins. O botones con efectos u otra cosa interesante
C> que mejore la estética de los programas
C>             

Para cambiar el aspecto de un botón, como por ejemplo, agregar una imagen, crea el botón con el estilo 'BS_OWNERDRAW'. Esto implica que tendrás que procesar los mensajes 'WM_MEASUREITEM' y 'WM_DRAWITEM'.

Para tener comportamientos no estándares, tendrás que hacer una subclase basándote en la clase de ventana para el botón. Esto se hace guardando el procedimiento de ventana original, para luego aplicar el nuestro que hemos creado. Por ejemplo,

// Nuestro Procedimiento de Ventana para cambiar los botones
INT WINAPI MiBotonProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam );

WNDPROC wpBotonOrig;
...
// Creamos la subclase para los botones
wpBotonOrig = (WNDPROC)SetWindowLong( hBoton, GWL_WNDPROC, (LONG) MiBotonProc ); 

INT WINAPI MiBotonProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
  // Hacer los cambios
  ...

  // Volver al comportamiento "normal" de un botón
  return CallWindowProc( wpBotonOrig, hwnd, uMsg, wParam, lParam );
}


Espero que esto te sirva.

Steven


Más información sobre la lista de distribución Cconclase