TRANSPARENCE (WIN 32)

cs_nico23 Messages postés 12 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 29 décembre 2004 - 15 nov. 2004 à 13:02
Itsuki2 Messages postés 13 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 23 juin 2007 - 15 janv. 2007 à 14:37
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/27579-transparence-win-32

Itsuki2 Messages postés 13 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 23 juin 2007
15 janv. 2007 à 14:37
Hello,
Je suis de passage... et pour répondre à ta question :
Sur certaine version de Windows (2000 Pro par exemple), la fonction 'SetLayeredWindowAttributes' n'est pas chargé par défaut car dans les headers, la variable qui définit la version de ton Windows n'est pas assez récente.
Voilà 2 solutions rapide pour mettre la transparence en place sans te casser la tête.( il y a d'autre méthode ) :
1) Soit tu modifie ton headers (5 secondes)
2) Soit tu importes la fonction (10 secondes)

Personnellement je préfère la 2eme car tu ne touches pas tes headers :
#################################################################
void Transparence(HWND Hwnd_Tmp, DWORD Alpha)
{
BOOL (WINAPI *Fonction_Import)(HWND hWnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags);
SetWindowLong(Hwnd_Tmp, GWL_EXSTYLE, GetWindowLong(Hwnd_Tmp, GWL_EXSTYLE) | WS_EX_LAYERED);
HMODULE Handle = GetModuleHandle(("USER32.DLL"));
Fonction_Import = (BOOL (WINAPI *) (HWND, COLORREF, BYTE, DWORD)) GetProcAddress (Handle, "SetLayeredWindowAttributes");
(Fonction_Import)(Hwnd_Tmp, 0, (BYTE)Alpha, LWA_ALPHA);
}
#################################################################
Voilà, à noter que ca marche pas si tu utilise du DIRECTX dans ta fenetre.

Bon courage @+
cs_mayti Messages postés 36 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 11 juin 2005
30 mars 2005 à 14:51
je comprends pas pourquoi, j'ai juste convertit le pojet pour VC c++ 6 et il me met SetLayeredWindowAttributes undeclared identifier
cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012
15 nov. 2004 à 15:02
Effectivement LordBob. Je viens de mettre à jour le code pour ne plus avoir ce message d'erreur.
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
15 nov. 2004 à 13:08
le programme marche bien, et le code est plutot simple, seulement quand on fiat une "mise à jour", un message d'erreur apparait, bien qu'il n'y en ai pas...
cs_nico23 Messages postés 12 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 29 décembre 2004
15 nov. 2004 à 13:02
Il reste quelques bugs dans l'application mais c'est vrai qu'il est mieu d'utiliser l'api !

;) Bonne continuation @ toi.

Autre prog dédié à SetLayeredWindowAttributes :
http://www.cppfrance.com/code.aspx?ID=27521

^^
Rejoignez-nous