Itsuki2
Messages postés13Date d'inscriptionjeudi 24 mars 2005StatutMembreDernière intervention23 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és36Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention11 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és933Date d'inscriptiondimanche 1 avril 2001StatutMembreDerniè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és2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 20099 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és12Date d'inscriptionmercredi 10 mars 2004StatutMembreDernière intervention29 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 !
15 janv. 2007 à 14:37
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 @+
30 mars 2005 à 14:51
15 nov. 2004 à 15:02
15 nov. 2004 à 13:08
15 nov. 2004 à 13:02
;) Bonne continuation @ toi.
Autre prog dédié à SetLayeredWindowAttributes :
http://www.cppfrance.com/code.aspx?ID=27521
^^