PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Ombre portée des fenetres
Ombre portée des fenetres
Débuté par david.basinski, 07 mar. 2006 18:48 - 2 réponses
Posté le 07 mars 2006 - 18:48
Bonjour,


Est il possible d'associer aux fenetres une ombre portée ?
J'ai vu qu'il etait possible dele faire en VB, mais je ne touve rien en Windev...

Merci.


David
Posté le 08 mars 2006 - 10:41
A condition d'être sous XP, il faut ajouter le style CS_DROPSHADOW à la classe utilisée lors de la création de la fenêtre.
La classe utilisée par WinDev se nome "WinDevObject"
L' API "SetClassLong" avec la constante GCL_STYLE permet de modifier le style de la classe.

Mais le problème avec WinDev, c'est que "WinDevObject" est utilisé avec toutes les fenêtres, aussi bien la principale que les fenêtre de type child popup, alors je ne suis pas sûr que ce soit une bonne idée de le faire.
Posté le 08 mars 2006 - 12:01
David --

Vous trouverez ci-dessous la fonction pour ajouter le CS_DROPSHADOW à une fenêtre WinDev.

çà marche bien quand la fenêtre est au dessus du bureau de windows.
C'est pas terrible au dessus d'une autre fenêtre WinDev...

FUNCTION DropShadow(hWnd is int)
Success is int = False
IF API("USER32", "IsWindow", hWnd) THEN
sVersion is string = Left(SysWindowsVersion(), 1)
Ret is int
IF StringCount("XV2", sVersion) THEN // XP, 2003, VISTA
Ret = API("USER32","GetClassLongA", hWnd, GCL_STYLE)
IF BinaryAND(Ret, CS_DROPSHADOW) = 0 THEN
Ret += CS_DROPSHADOW
IF API("USER32","SetClassLongA", hWnd, GCL_STYLE, Ret) THEN Success = True
END
END
END
RESULT Success

Note: Je préfère écrire mon code en anglais, si ce n'est pas votre cas, cliquez sur l'option langue du code pour convertir le code ci-dessus en BASICOIS.