J'explique mon problème: j'ai une GUI principale ($MAIN) avec divers éléments, et je voudrais que lorsque je clique sur un bouton, un autre GUI ($SECOND) apparaisse devant la précédente mais sans être devant toutes les autres fenêtres (comme le fait $WS_EX_TOPMOST).
Mais je voudrais en plus que $MAIN ne puisse être modifiée tant que $SECOND n'ai pas fermée, pour être plus clair c'est une espèce de pop-up comme l'on peut avoir sur n'importe quel navigateur internet.
En vous remerciant de votre aide
PS: J'ai cherché sur le forum mais je n'ai trouvé
Modifié en dernier par Idrazil le lun. 18 août 2014 15:56, modifié 1 fois.
#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#include <GuiListView.au3>
#include <GuiComboBoxEx.au3>
#include <ListViewConstants.au3>
#include <Array.au3>
#include <Fcts.au3>
_MAIN()
Func _MAIN()
Global $MAIN=GUICreate("FileMover",500,400)
Local $Origin=GUICtrlCreateInput("",10,10)
Local $End=GUICtrlCreateInput("",10,40)
Local $Origin_Path=GUICtrlCreateButton(" Parcourir ",250,10)
Local $End_Path=GUICtrlCreateButton(" Parcourir ",250,40)
Local $Get_Exts=GUICtrlCreateButton(" Extension ",10,250)
Local $Save=GUICtrlCreateButton(" Enregistrer ",10,300)
Dim $Exts
Dim $Name
Dim $Last[10000]
Dim $Final[10000]
Dim $nb
Local $i,$j
GUISetState(@SW_SHOW, $MAIN)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $Origin_Path
GUICtrlSetData($Origin,FileSelectFolder("folder",""))
Case $End_Path
GUICtrlSetData($End,FileSelectFolder("folder",""))
Case $Get_Exts
$nb=DirGetSize(GUICtrlRead($Origin),1)
$Exts=StringSplit(_ListFiles(GUICtrlRead($Origin),"*"),"|")
For $i=1 To $nb[1] Step +1
$Name=StringSplit($Exts[$i],".")
$Last[$i]=$Name[$Name[0]]
Next
For $i=1 To $nb[1]
For $j=0 To $i-1
If $Last[$i]<>$Last[$j] Then
$Final[$i]=$Last[$i]
Else
$Final[$i]=""
$j=$i
EndIf
Next
Next
For $i=1 To $nb[1] Step +1
If $Final[$i]<>"" Then
MsgBox("","",$Final[$i])
EndIf
Next
;=========================================================================
Global $EXTS=GUICreate("Extensions",200,100)
;=========================================================================
GUISetState(@SW_SHOW, $EXTS)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Case $Save
_FileCreate(".\Macros\"&InputBox("Enregistrement","Entrer le nom de votre macro:","")&".ini")
EndSwitch
WEnd
EndFunc
La GUI dont je parle se trouve éntre les ";===="
Tu as raison, je ne peux pas effectuer d'actions sur les boutons mais les Inputs restent modifiables "à la main" (ce n'est qu'un petit point dont je peux trouver une solution de contournement)
Je vous conseille fortement de passer en mode événementiel pour vos gui, votre code n'en sera que plus lisible et beaucoup moins complexe, cela vous permettra entre autre de pouvoir gérer plusieurs GUI en parallèle assez facilement.
(des exemples doivent se trouver sur le forum).
Votre problème actuellement c'est que lorsque vous ouvrez votre 2eme GUI, vous lancez une seconde boucle infinie dans la 1ere, ce qui empêchera le rafraichissement de la première (voir des deux ?).