1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
| // Syntaxe :
//[ <Résultat> = ] fg_TransparenceFenetre ( [<sNomFenetre> [, <eOpacite> est entier [, <eCouleur> est entier [, <sErr> est chaîne]]]])
//
// Paramètres :
// sNomFenetre : <indiquez ici le rôle de sNomFenetre>
// eOpacite (entier - valeur par défaut=128) : <indiquez ici le rôle de eOpacite>
// eCouleur (entier - valeur par défaut=0) : <indiquez ici le rôle de eCouleur>
// sErr (chaîne ANSI - valeur par défaut="") : <indiquez ici le rôle de sErr>
// Valeur de retour :
// booléen : // Aucune
// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE fg_TransparenceFenetre(sNomFenetre = FenEnExécution, eOpacite est un entier=128, LOCAL eCouleur est un entier=Null, sErr est une chaîne="")
// Paramètres (tous optionnels) :
// - sNomFenetre : nom de la fenetre à modifier
// - eOpacité : entier 0 à 255 : degré d'opacité à appliquer (uniquement pour la fenetre entière, la couleur de pixel ne doit pas être spécifié).
// 0 = transparence totale
// 255 = opacité totale
// - eCouleur : entier, filtre de couleur RVB (la transparence (totale) ne sera appliquée que pour
// les pixels de la couleur concernée. Si Null ou aucun parametre, l'opacité sera
// appliquée pour tous les pixels de la fenetre, avec le degré d'opacité spécifié
// - sErr : chaine passée par adresse pour récupérer les erreurs éventuelles
// Retour : Booléen, VRAI en cas de succès
// en cas d'erreur, la fonction retourne FAUX et la chaine
// sErr passée par adresse peut être récupérée.
// Références API:
// http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing.asp
//
// Exemple :
// sRetourErreur est une chaine=""
// SI OuiNon("OUI -> toute la fenêtre"+rc+"NON -> Pixels blancs seuls ?") ALORS
// // toute la fenetre, opacité à moitié
// // on ne teste pas le retour d'erreur
// pg_TransparenceFenetre()
// SINON
// // uniquement les pixels blancs, transparence totale
// SI pg_TransparenceFenetre(FenEnExécution(), 0, iblanc, sRetourErreur) ALORS
// Info("La fenetre a bien été rendue totalement transparente pour les pixels blancs")
// SINON
// Erreur("Erreur, la fenêtre n'a pas pu être rendue transparente, raison : "+ sRetourErreur)
// FIN
// FIN
LWA_COLORKEY est un entier = 1
LWA_ALPHA est un entier = 2
GWL_EXSTYLE est un entier = -20
WS_EX_LAYERED est un entier = 0x80000
bRetour est un booléen = Faux
eParam est un entier
EHan est un entier système
eWdStyle est un entier
SI SysVersionWindows(sysVersionPlateForme) = "NT" ALORS
SI (SysVersionWindows()<>"NT 3.5" ET SysVersionWindows()<>"NT 4") ALORS
SI eOpacite<0 OU eOpacite>255 ALORS eOpacite = 128
EHan = Handle(sNomFenetre)
// Récupère le style de la fenetre en cours
eWdStyle=API("USER32.DLL","GetWindowLongA",EHan,GWL_EXSTYLE)
SI eWdStyle <> 0 ALORS
// donne le style 'layered' à la fenetre
eWdStyle = OUBinaire(eWdStyle, WS_EX_LAYERED)
SI API("user32", "SetWindowLongA", EHan, GWL_EXSTYLE, eWdStyle)<>0 ALORS
// reglage de l'opacité
SI eCouleur=Null ALORS
// pas de couleur spécifiée : pour tous les pixels
eParam = LWA_ALPHA
eCouleur = 0
SINON // la couleur est spécifiée, l'opacité n'a pas d'importance
eParam = LWA_COLORKEY
FIN
SI API("user32", "SetLayeredWindowAttributes", EHan, eCouleur, eOpacite, eParam)<>0 ALORS
bRetour = Vrai
SINON
sErr = "Erreur dans la fonction SetLayeredWindowAttributes, détails de l'erreur système : "+ ErreurInfo(errMessageSystème)
FIN
SINON
sErr = "Erreur dans la fonction SetWindowLongA, détails de l'erreur système : "+ ErreurInfo(errMessageSystème)
FIN
SINON
sErr = "Erreur dans la fonction GetWindowLongA, détails de l'erreur système : "+ ErreurInfo(errMessageSystème)
FIN
SINON
sErr = "Cette fonction n'est pas disponible avec la version de Windows installée (NT 3.5 ou 4)."
FIN
SINON
sErr = "Cette fonction n'est pas disponible avec la version de Windows installée (W32s, W9x ou ME)."
FIN
RENVOYER bRetour |
Partager