Pregunta

En WTL, CBITMAPBUTTON no admite la imagen con una capa transparente, como PNG. Así que personalizo el código para usar GDI + para dibujar PNG, nombrarlo como CPNGButton. Pero las cosas son extrañas en Win XP. Cuando se superpone el botón por otra ventana, el botón recibe primero WM_PAINT, y luego el padre, lo que causa un resultado incorrecto.

ingrese la descripción de la imagen aquí --->  ingrese la descripción de la imagen aquí

Revise el recurso y retire el atributo ws_tabstop de la plantilla del botón, las cosas van bien, la ventana principal recibe primero WM_PAINT, luego el botón. ¿Qué hace que WS_TABSTOP afecte la orden de pintura de la ventana?

¿Fue útil?

Solución

Esto es lo que sucede cuando no dibuja el fondo.Eso deja un 'agujero' en la ventana, ves los píxeles de cualquier ventana que esté detrás del tuyo.O el escritorio si no hay tal ventana.De lo contrario, no está seguro de lo que esto tiene que ver con ws_tabstop.

Usa la bandera de estilo ws_ex_transparent.Eso le dice a Windows que desea que el padre del botón se dibuje en la ventana del cliente para proporcionar los píxeles de fondo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top