[C con Clase] Rectangle sin margen

Steven Davidson steven en conclase.net
Lun Dic 18 12:49:28 CET 2006


Hola Abel,

El pasado 2006-12-18 06:29:32, Abel escribió:
 
A> Hola a todos,
A>   recien estuve escribiendo un programa donde tuve la necesidad de dibujar un rectángulo que no tenga márgen, lo escribí asi como indica el Tutorial de WinAPi con PS_NULL, tambien lo hice con NULL_PEN, pero siempre me muestra una línea delgada negra. A la final decidí pintar ese margen con el color de fondo de la Ventana, pero no sé cómo obtengo ese color para mi hPen1, podría alguien por favor indicarme cómo obtengo ese color?

He hecho varias pruebas, y no he tenido el problema que nos comentas. Lo único que puedo pensar es que quizá no seleccionaste tal pluma al DC del área del cliente.

Para obtener el color de fondo del área del cliente, accede a la información de la clase. Esto se puede hacer con la función 'GetClassLong()'. Por ejemplo,

HBRUSH hbrFondo = (HBRUSH) GetClassLong( hwnd, GCL_HBRBACKGROUND );

También puedes usar la función 'GetDCBrushColor()'. Por ejemplo,

HBRUSH hbrFondo = CreateSolidBrush( GetDCBrushColor(hdc) );

A>   Ps. Una pregunta adicional que tengo: cómo defino el color de fondo de mi Ventana, por decir quiero que el color de fondo sea verde. Gracias

Puedes usar la función 'SetClassLong()' para cambiar el parámetro en la clase de la ventana. Por ejemplo,

SetClassLong( hwnd, GCL_HBRBACKGROUND, (LONG)hbrFondo );

Otra posibilidad es procesando el mensaje 'WM_ERASEBKGND'.


Espero haber aclarado las dudas.

Steven


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