[R] Fenêtre fille sans bord positionnée en xy

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

[R] Fenêtre fille sans bord positionnée en xy

#1

Message par pierrotm777 »

Bonjour,
Je cherche à créer une fenêtre fille 'options', sans bord avec juste cinq boutons, que je puisse postionner en x et en y.
Si j'appuie sur le bouton 'DS Files', je voudrais que la fenêtre 'options', se place juste en dessous de ce bouton.
Un autre appuie faisant disparaître la fenêtre 'options'.

Pour l'instant , la fenêtre option reste toujours dans le bord gauche !
► Afficher le texte
Merci de votre aide
Modifié en dernier par pierrotm777 le mar. 15 févr. 2011 13:27, modifié 1 fois.
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Fenêtre fille sans bord positionnée en xy

#2

Message par zeshrek »

hmmm.... au début j'allais te suggerer plutot d'utiliser un GUICtrlCreateMenu de facon a faire un classique menu déroulant (pourquoi réinventer le fil a couper l'eau tiède...) et gérer toi même tes déroulages de menus...
Et puis bon, finalement il y avait peu de lignes a modifier...
M'est avis qu'il faudrait réviser tes comon_styles et extended_styles... ;)

(j'en ai profité aussi pour refaire l'alignement des boutons, toussa... ;) )
► Afficher le texte
Si vis pacem para bellum
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Fenêtre fille sans bord positionnée en xy

#3

Message par TommyDDR »

D'après la Doc :

Code : Tout sélectionner

GUICreate ( "title" [, width [, height [, left [, top [, style [, exStyle [, parent]]]]]]] )
Or vous avez écrit :

Code : Tout sélectionner

GUICreate("", 82, 125, 200, 200, $MainGUI,BitOR($WS_SYSMENU,$WS_DLGFRAME,$WS_POPUP,$WS_CLIPSIBLINGS))
Que je vais résumer par :

Code : Tout sélectionner

GUICreate("", 82, 125, 200, 200, $MainGUI, $Styles)
Je traduis donc votre ligne :
Titre = ""
width = 82
height = 125
left = 200
top = 200
style = $MainGUI
exStyle = $Styles
parent = 0

Je pense qu'à ce niveau vous avez du trouver votre faute.
Dans le doute :

style = $Styles
exStyle = -1
parent = $MainGUI

Je ne me suis pas trop penché sur le fond de votre GUI mais votre demande ressemble fortement à ce que fait déjà GUICtrlCreateMenu()
(Regardez l'exemple de la doc pour plus d'infos)

Edit : Grillé par zeshrek !!
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Fenêtre fille sans bord positionnée en xy

#4

Message par zeshrek »

zeshrek, l'ogre qui code plus vite que son ombre :D
Si vis pacem para bellum
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Fenêtre fille sans bord positionnée en xy

#5

Message par pierrotm777 »

Evidemment, si je lis la doc à l'envers ça ne va pas !

J'ai donc modifié ainsi

Code : Tout sélectionner

$MainGUI = GUICreate("IcarDS Skinner Tool "&$version&"     By: pierrotm777", 500, 603, -1, -1)
$MainPos = WinGetPos($MainGUI)
Le wingetpos me donnant la position de la fenêtre principale , il me suffit donc d'ajouter à ces coordonnées l'offset nécessaire au décalage que je souhaite:

Code : Tout sélectionner

;Gui Options
$OptionsGUI = GUICreate("", 82, 125, $MainPos[0]+230, $MainPos[1]+61, BitOR($WS_SYSMENU,$WS_DLGFRAME,$WS_POPUP,$WS_CLIPSIBLINGS),-1,$MainGUI)
Il me manque encore la solution permettant de refermer la fenêtre option avec le même bouton !
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Fenêtre fille sans bord positionnée en xy

#6

Message par zeshrek »

toi tu n'as pas lu le bout de code que je t'avais mis un peu plus haut !
avec le styme $WS_EX_MDICHILD tu n'as pas besoin de te prendre la tete avec l'offset , il se fait tout seul, et en plus la fenetre fille est déplacée avec la mere.

Sinon pour tes probleme de on/off de ta sous-gui, voilà :

Code : Tout sélectionner

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=ds.ico
#AutoIt3Wrapper_outfile=SkinToolDS.exe
#AutoIt3Wrapper_Res_Fileversion=0.1.0.0
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <ButtonConstants.au3>

Dim $version = "0.1", $Profile
Dim $MainGUI, $DebugGUI

$MainGUI = GUICreate("IcarDS Skinner Tool "&$version&"     By: pierrotm777", 500, 603, -1, -1)
$Commands = GUICtrlCreateButton("Commands", 5, 5, 100, 25)
GUICtrlSetState($Commands,$GUI_DISABLE)
$LiveDebugLog = GUICtrlCreateButton("Live Debug Log", 105, 5, 100, 25)
$DSFiles = GUICtrlCreateButton("DS Files", 230, 5, 80, 25)
$Options = GUICtrlCreateButton("Options", 325, 5, 80, 25)
$onTop = GUICtrlCreateCheckbox("On Top?", 420, 10, 120, 20)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUISetState()

;GUI de debug
$DebugGUI = GUICreate("IcarDS Skinner Tool "&$version&"     By: pierrotm777", 500, 603, -1, -1, -1, -1, $MainGUI)
$ReturnToMainGUI = GUICtrlCreateButton("Commands", 5, 5, 100, 25)
GUICtrlSetState($ReturnToMainGUI,$GUI_ENABLE)
GUISetState(@SW_HIDE,$DebugGUI)


;Gui Options
;$OptionsGUI = GUICreate("", 82, 125, -1, -1, $MainGUI,BitOR($WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_BORDER,$WS_CLIPSIBLINGS))
$CoordsMainGui = WinGetPos($MainGui)
$OptionsGUI = GUICreate("", 81, 126, 230, 31,BitOR($WS_SYSMENU,$WS_DLGFRAME,$WS_POPUP,$WS_CLIPSIBLINGS),bitor($WS_EX_MDICHILD,$WS_EX_CLIENTEDGE),$MainGUI)
$DSDebug = GUICtrlCreateButton("DS Debug", 1, 1, 80, 25)
$DSExecTBL = GUICtrlCreateButton("DS ExecTBL", 1, 26, 80, 25)
$SkinExecTBL = GUICtrlCreateButton("SkinExecTBL", 1, 51, 80, 25)
$SkinINI = GUICtrlCreateButton("Skin Ini", 1, 76, 80, 25)
$DSDocs = GUICtrlCreateButton("< DS Doc's", 1, 101, 80, 25)
GUISetState(@SW_HIDE,$OptionsGUI)
$OptionsGUIStatus=False

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

        Case $DSFiles
            GUISwitch($OptionsGUI)
            if $OptionsGUIStatus = true Then
                GUISetState(@SW_HIDE,$OptionsGUI)
                $OptionsGUIStatus=False
            Else
                GUISetState(@SW_SHOW,$OptionsGUI)
                $OptionsGUIStatus=True
            EndIf

    EndSwitch

Wend

 
Si vis pacem para bellum
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Fenêtre fille sans bord positionnée en xy

#7

Message par pierrotm777 »

Si si j'te JURE !!! :mrgreen:

Et le bloquage de la fenêtre fille, j'adore , .

Merci zeshrek et à vous tous pour votre aide inestimable
Répondre