TRANSPARENCE (WIN 32)

Signaler
Messages postés
12
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
29 décembre 2004
-
Messages postés
13
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
23 juin 2007
-
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

Messages postés
13
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
23 juin 2007

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 @+
Messages postés
36
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
11 juin 2005

je comprends pas pourquoi, j'ai juste convertit le pojet pour VC c++ 6 et il me met SetLayeredWindowAttributes undeclared identifier
Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
Effectivement LordBob. Je viens de mettre à jour le code pour ne plus avoir ce message d'erreur.
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
11
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...
Messages postés
12
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
29 décembre 2004

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

^^