Page 1 sur 1

[R] Manipulation de style étendu des fenêtres AutoIt

Posté : jeu. 06 oct. 2011 19:08
par Dinosaure
Bonjour, j'ai une fenêtre (GUI) à manipuler, créée avec GUICreate(), dont je connais le Handle, et dont je voudrais modifier le style étendu (Ex_Style).
Elle possède 2 CheckBoxes :
- Une contrôlant la mise sur le devant ("Always on Top" ou "Topmost")
- Une contrôlant l'apparence ("Normale" ou "Tooltip")

Voilà un script de test, je me suis basé sur l'exemple de la fonction GUISetStyle :
► Afficher le texte
J'ai quelques soucis, voici la liste des opérations qui n'ont pas le résultat escompté :
- Une fois la fenêtre créée sur le devant, impossible de la remettre en plan normal
- Une fois la fenêtre créée en plan normal, impossible de la remettre sur le devant
- La conservation du style par un GUIGetStyle() ne fonctionne pas
- Le style de GUISetStyle("-1", Extended) ne permet pas la modification du style étendu

J'aimerais pouvoir modifier la mise en Topmost de ma fenêtre sans avoir à la déconstruire systématiquement. De même, je souhaiterais changer les styles étendus d'une fenêtre sans toucher au style principal en cours, mais GUIGetState ne répond pas à mon besoin, et GUISetState ne permet pas de passer un paramètre "-1" en premier pour modifier l'étendu ensuite.
Pourriez-vous m'aider ?

Merci d'avance,
D.

Edition du 9/10/2011 : Le thread est résolu, mais la fonction GUIGetStyle() renvoie une valeur actuellement fausse, et GUISetStyle() ne permet pas la gestion du mode onTop, il faut utiliser une autre fonction.

Re: [..] Manipulation de style étendu des fenêtres AutoIt

Posté : jeu. 06 oct. 2011 22:36
par mikell
Dinosaure a écrit :J'aimerais pouvoir modifier la mise en Topmost de ma fenêtre sans avoir à la déconstruire systématiquement
ça contourne le problème mais ça marche...

Code : Tout sélectionner

$ontop = 0

Switch $Msg
    Case $boutonstyle     [color=#008000];   clic = on top , re-clic = pas ontop[/color]
        $ontop = not $ontop
        $handle = WinGetHandle("titre")
        WinSetOnTop($handle, "", $ontop)
EndSwitch

Re: [..] Manipulation de style étendu des fenêtres AutoIt

Posté : dim. 09 oct. 2011 12:21
par Dinosaure
Oh, je te remercie pour cette fonction WinSetOnTop(), je ne l'avais pas vue.
Elle ne m'arrange pas vraiment car elle ne passe pas par GUISetStyle(), mais c'est déjà ça !

Il me reste le problème du GUISetStyle() qui ne rafraîchit pas l'affichage de la fenêtre :

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
Local $a, $hw = GuiCreate(@scriptname)
GUISetState()
MsgBox(0,@scriptname,"pause")
$a=GUIGetStyle($hw)
GUISetStyle($a[0], $WS_EX_TOOLWINDOW, $hw) ;Test alternatif avec GUISetStyle(-1, $WS_EX_TOOLWINDOW, $hw)
MsgBox(0,@scriptname,"pause")
Note, je viens de trouver : il y a un "0x10000000" de trop dans le rapport de style généré par GUIGetStyle(), ma fenêtre créée en "0x84CF0000" est rapportée comme "0x94CF0000". À mon avis, le soucis apparaît aussi lors de l'utilisation de GUISetStyle(-1, x) faisant certainement appel à GUIGetStyle().


Temporairement, voici le code de test du premier message mit à jour :
► Afficher le texte
Je vais pouvoir noter le thread comme résolu et continuer. Merci pour l'aide !
Dois-je faire un rapport d'erreur ?

D.