Page 1 sur 1

[R] Fenêtre sans bordure ni barre de titre

Posté : jeu. 22 mai 2014 01:00
par cluster49
Bonjour

Je souhaiterais pouvoir ouvrir une application en mode "popup" sans que ni les bordures ni la barre de titre n'apparaissent. Je peux le faire sur une GUI grâce à $WS_POPUP mais avec ma maigre expérience en AutoIt je sèche pour l'adapter sur une application comme le bloc note par exemple.

Si quelqu'un à la solution je suis preneur.

D'avance merci.

Re: [..] Fenêtre sans bordure ni barre de titre

Posté : jeu. 22 mai 2014 09:16
par jguinch
Pour appliquer un style à une fenêtre (autre que ta GUI), tu peux utiliser _WinAPI_SetWindowLong()

Petit exemple d'utilisation :
► Afficher le texte

Re: [..] Fenêtre sans bordure ni barre de titre

Posté : jeu. 22 mai 2014 15:20
par cluster49
Merci jguinch,

Cela fonctionne mais je n'arrive pas à adapter à mon cas. En fait je ne comprends pas bien la partie :
$gui_style = GUIGetStyle ($hGUI)[0]
$gui_extStyle =GUIGetStyle ($hGUI)[1]

J'ai essayé de simplifier au maximum le code de cette façon :
► Afficher le texte
J'ai donc remplacé $gui_style par $WS_POPUP pensant que ce serait la même chose mais ce n'est pas le cas puisque je ne peux alors plus écrire dans le bloc note.

Dans mon code simplifié, par quoi remplacer $WS_POPUP pour que je puisse utiliser le bloc note comme dans ton code ?

Re: [..] Fenêtre sans bordure ni barre de titre

Posté : jeu. 22 mai 2014 15:33
par jguinch

Code : Tout sélectionner

_WinAPI_SetWindowLong ( $hNotepad, $GWL_STYLE, $WS_POPUP + $WS_VISIBLE + $WS_CLIPSIBLINGS)
 

Re: [..] Fenêtre sans bordure ni barre de titre

Posté : jeu. 22 mai 2014 15:36
par mikell
GuiGetStyle retourne une array (cf.l'aide)
GUIGetStyle ($hGUI)[0] est l'équivalent de
$gui_style = GUIGetStyle ($hGUI)
$st = $gui_style[0]


$WS_POPUP seul ne suffit pas, une fenêtre a toujours une combinaison de styles
A vue de nez ce qu'il te faudrait c'est qqe chose comme
BitOr($WS_POPUP, $WS_TABSTOP, $WS_VISIBLE)

Edit
jguinch on poste encore en même temps :mrgreen:
BitOr !!

Re: [..] Fenêtre sans bordure ni barre de titre

Posté : jeu. 22 mai 2014 18:08
par TommyDDR
+1 avec Mikell, il faut utiliser BitOr pour combiner des flags.
Vu que les gens s'entêtent à utiliser le +, voici un exemple de "Pourquoi BitOr ?" :

Voici les flags :

Code : Tout sélectionner

$WS_POPUP = 0x80000000
$WS_BORDER = 0x00800000
$WS_SYSMENU = 0x00080000
$WS_POPUPWINDOW = 0x80880000
Maintenant vous voulez utiliser les flags $WS_POPUPWINDOW (parce que vous aimez bien ne pas avoir de barre de titre) et le flag $WS_BORDER, parce que la bordure est cool.

$WS_BORDER + $WS_POPUPWINDOW = 0x81080000 (car $WS_POPUPWINDOW contient déjà $WS_BORDER)
Alors que
BitOr($WS_BORDER, $WS_POPUPWINDOW) = 0x80880000

Avec BitOr, vous n'avez pas à vous soucier qu'un flag soit présent une fois ou plus. Et encore, là je donne un exemple fixe, imaginez maintenant un UDF qui combinerait un flag choisi par l'utilisateur et un flag forcé par votre UDF, si l'utilisateur choisis le même flag que celui qui est forcé, vous courrez à la catastrophe.

Re: [..] Fenêtre sans bordure ni barre de titre

Posté : jeu. 22 mai 2014 18:29
par jguinch
Ah oui, je suis allé un peu vite...

Re: [..] Fenêtre sans bordure ni barre de titre

Posté : jeu. 22 mai 2014 19:25
par mikell
Calcul machiavélique ou chance ? :mrgreen:

Code : Tout sélectionner

#include <WindowsConstants.au3> 

$1 = $WS_POPUP + $WS_VISIBLE + $WS_CLIPSIBLINGS
$2 = BitOr($WS_POPUP, $WS_VISIBLE, $WS_CLIPSIBLINGS)
Msgbox(0,"", "0x" & Hex($1) &@crlf& "0x" & Hex($2))

$1 = $WS_BORDER + $WS_POPUPWINDOW
$2 = BitOr($WS_BORDER, $WS_POPUPWINDOW)
Msgbox(0,"", "0x" & Hex($1) &@crlf& "0x" & Hex($2))

Re: [..] Fenêtre sans bordure ni barre de titre

Posté : jeu. 22 mai 2014 22:54
par cluster49
Un grand merci messieurs,

Grâce à vous j'y vois plus claire. Il me reste cependant une question : Une fois les bordures et la barre de titre supprimées la fenêtre n'est pas réduite pour autant, le "corps" de celle-ci s'ancre dans le coin du haut à gauche. Il reste donc une large bande de pixels en bas qui ne sert à rien ainsi qu'une bande à droite. Y a t-il moyen de les supprimer ou de les masquer pour que la taille de la fenêtre soit parfaitement adaptée à son contenu ?

En espérant avoir été claire.

Re: [..] Fenêtre sans bordure ni barre de titre

Posté : ven. 23 mai 2014 06:58
par jguinch
Ca doit dépendre de l'application elle-même. C'est qu'elle application ?

Re: [..] Fenêtre sans bordure ni barre de titre

Posté : ven. 23 mai 2014 09:11
par cluster49
Dans mon cas il s'agit de "vncviewer" mais j'ai le même résultat avec notepad : l'ascenseur vertical du logiciel n'est pas collé sur la droite et en bas on voit également une zone vide (la zone de texte et son ascenseur vertical n'arrivent pas jusqu'en bas. En fait il faudrait pouvoir rogner le bas de la fenêtre de 38 pixels et la droite de 16 pixels pour l'adapter à son contenu.

En fait l'espace du bas de 38 pixels correspond initialement à la hauteur de la barre des titres + la bordure du bas (30 + 8 ) et l'espace de droite de 16 pixels correspond initialement à l'épaisseur des deux bordures verticales du logiciel (8 + 8 ). Je suis sous aero.

Re: [..] Fenêtre sans bordure ni barre de titre

Posté : ven. 23 mai 2014 09:28
par jguinch
Toutes les fenêtres ne sont pas prévues pour ça...
Une solution pourrait être de passer le VNCViewer en plein écran puis redimensionner la fenêtre :
► Afficher le texte
Ca marche bien chez moi avec la version Enterprise.

Re: [..] Fenêtre sans bordure ni barre de titre

Posté : ven. 23 mai 2014 10:14
par cluster49
Ah oui c'est bien vu. Je peux adapter la taille de ma fenêtre. Mais cela me fait apparaitre des ascenseurs. Je souhaiterais les enlever pour que tout soit parfait mais une fois encore je sèche :(.

Re: [..] Fenêtre sans bordure ni barre de titre

Posté : ven. 23 mai 2014 12:23
par jguinch
Dans les options du viewer (enterprise pour moi), je peux choisir "Scale to window size", du coup pas d’ascenseur : le contenu s'adapte à la taille de la fenêtre (l'affichage est donc déformé).

Re: [..] Fenêtre sans bordure ni barre de titre

Posté : ven. 23 mai 2014 15:22
par cluster49
Non en effet je n'ai pas ça sur le mien mais j'ai trouvé une version qui le fait "Real VNC". Quoi qu'il en soit je devrais pouvoir m'en sortir maintenant.

Un grand merci pour votre aide.