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

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Dinosaure
Niveau 1
Niveau 1
Messages : 14
Enregistré le : jeu. 06 oct. 2011 16:36
Status : Hors ligne

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

#1

Message 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.
Modifié en dernier par Dinosaure le dim. 09 oct. 2011 12:27, modifié 2 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

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

#2

Message 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
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Dinosaure
Niveau 1
Niveau 1
Messages : 14
Enregistré le : jeu. 06 oct. 2011 16:36
Status : Hors ligne

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

#3

Message 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.
Répondre