Question

Dans WTL, Cbitmapbutton ne prend pas en charge l'image avec une couche transparente, comme PNG. Je personnalise donc le code pour utiliser GDI + pour dessiner PNG, le nommez comme cpngbutton. Mais les choses sont étranges sur Win XP. Lorsque le bouton est chevauché par une autre fenêtre, le bouton reçoit d'abord WM_PAINT, puis le parent, provoquant un résultat incorrect.

enter image description here--->enter image description here

Je vérifie la ressource et supprime l'attribut ws_tabstop du modèle du bouton, les choses vont bien, la fenêtre parent reçoit d'abord wm_paint, puis le bouton. Qu'est-ce qui fait que WS_TABSTOP affecte l'ordre de peinture des fenêtres?

Était-ce utile?

La solution

C'est ce qui se passe lorsque vous ne dessinez pas l'arrière-plan. Cela laisse un «trou» dans la fenêtre, vous voyez les pixels de la fenêtre derrière la vôtre. Ou le bureau en cas de fenêtre de ce type. Pas autrement sûr de ce que cela a à voir avec WS_TABSTOP.

Utilisez l'indicateur de style WS_EX_TRANSPARET. Cela indique à Windows que vous voulez que le parent du bouton se dessinait dans la fenêtre du client pour fournir les pixels d'arrière-plan.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top