2010-10-19 9 views
3

J'utilise SetLayeredWindowAttributer pour rendre une couleur particulière de la fenêtre en couches transparente.SetLayeredWindowAttributes ne fonctionne pas sous Windows 7

Cela fonctionne très bien sur Windows XP, VISTA. Mais quand j'utilise la même chose sur Windows 7, ça ne marche pas.

SetLayeredWindowAttributes(hWnd, RGB(0xff,0xff,0xff), 0, LWA_COLORKEY); 

Lorsque j'utilise LWA_ALPHA, cela fonctionne aussi. Le problème est que je ne suis pas en mesure de faire une couleur particulière transparente dans Windows 7.

L'instruction suivante fonctionne sur Windows 7

SetLayeredWindowAttributes(hWnd,RGB(0xff,0xff,0xff), 100, LWA_ALPHA); 

Est-il possible que les la valeur de couleur des valeurs de couleur rendus ne correspondant pas à SetLayeredWindowAttributes?

Répondre

2

Vous devriez éviter d'utiliser 0xff, 0xff, 0xff (blanc) avec LWA_COLORKEY. Toute autre valeur devrait être bonne (par exemple 0xff, 0xff, 0xfe).

Pour plus de contrôle sur votre fenêtre en couches, je vous suggère d'utiliser UpdateLayeredWindowIndirect. J'ai écrit un article qui décrit en détail comment il peut être utilisé avec GDI et Direct2D.

http://msdn.microsoft.com/en-us/magazine/ee819134.aspx

Questions connexes