Page 1 sur 1
[R] Entre la barre de menu et le menu contextuel
Posté : mer. 01 avr. 2009 01:44
par DakinQuelia
Bonsoir à toutes et à tous,
Si je viens vous demander de l'aide, c'est parce que je débute et par conséquent, que j'ai beau cherché et n'ai pas trouvé la solution à mon problème (sauf erreur de ma part).
► Afficher le texte
Code : Tout sélectionner
; =====================================================================================
; Description ...: Script Test
; Author ........: Dakin Quelia
; Date ..........: 31/03/09
; Notes .........:
; ====================================================================================
#include <GuiConstantsEx.au3>
#include <AVIConstants.au3>
#include <TreeViewConstants.au3>
global $msg_menu
; GUI
GuiCreate("Sample GUI", 400, 400)
GuiSetIcon(@SystemDir & "\mspaint.exe", 0)
MainMenu()
ContextMenu()
; ===================================================================================
; MENU
; ===================================================================================
Func MainMenu()
Local $filemenu
Local $quit, $aboutmenu, $about
Local $msg, $file
#forceref $separator1
GUICreate("MainMenu", 300, 200)
$filemenu = GuiCtrlCreateMenu("Fichier")
$newfile = GUICtrlCreateMenuItem("Nouveau", $filemenu)
$quit = GUICtrlCreateMenuItem("Quitter", $filemenu)
$aboutmenu = GuiCtrlCreateMenu("?")
$about = GUICtrlCreateMenuItem("A propos", $aboutmenu)
GUISetState()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $newfile
MsgBox(0, "Nouveau", "test")
Case $msg = $quit Or $msg = -3 Or $msg = -1
ExitLoop
Case $msg = $about
MsgBox(0, "About", "GUI Menu Test")
EndSelect
WEnd
GUIDelete()
Exit
EndFunc
; ===================================================================================
; CONTEXT MENU
; ===================================================================================
Func ContextMenu()
Local $context, $contextMenu
Local $contextQuit, $contextAbout
Local $msg_context
$context = GUICreate("ContextMenu", 300, 200)
$contextMenu = GuiCtrlCreateContextMenu()
$contextAbout = GuiCtrlCreateMenuItem("A propos", $contextMenu)
$contextQuit = GUICtrlCreateMenuItem("Quitter", $contextMenu)
GUISetState()
While 1
$msg_context = GuiGetMsg()
If $msg_context = $contextQuit Or $msg_context = -3 Or $msg_context = -1 Then ExitLoop
If $msg_context = $contextAbout Then Msgbox(0,"A propos","A simple example with a context menu!")
WEnd
GUIDelete()
Exit
EndFunc
J'ai voulu créer la fonction Barre de menu et la fonction Menu Contextuel mais il semble que cela entre en conflit. Pourquoi? Je l'ignore sinon, j'aurais déjà résolu mon problème. J'ai hésité, au début, avant de vous appeler en espérant par trouver par moi-même mais je n'ai pu trouver donc je me retourne vers vous.
Je n'ai pas mis tout le code car trop lourd mais cela bloque à ce niveau. Le reste du script n'est pas exécuté de toute façon.
Je vous remercie d'avance.
A bientôt,
Re: [Problème] Entre la barre de menu et le menu contextuel
Posté : mer. 01 avr. 2009 04:25
par orax
La fonction ContextMenu() n'était jamais exécutée car il y avait une boucle infinie (enfin... infinie jusqu'à ce qu'on clique sur la croix de fermeture) dans MainMenu(). Je pense que GUICreate() va créer la fenêtre principale et qu'il ne faut pas le remettre ensuite pour créer le menu contextuel (mais vu que je ne connais rien en GUI, je ne suis pas sûr de ça).
Le code ci-dessous SEMBLE fonctionnel mais il est tout de même préférable de le vérifier.
► Afficher le texte
Code : Tout sélectionner
; =====================================================================================
; Description ...: Script Test
; Author ........: Dakin Quelia
; Date ..........: 31/03/09
; Notes .........:
; ====================================================================================
#include <GuiConstantsEx.au3>
#include <AVIConstants.au3>
#include <TreeViewConstants.au3>
Global $msg_menu, $msg
; GUI
GUICreate("Sample GUI", 400, 400)
GUISetIcon(@SystemDir & "\mspaint.exe", 0)
; ===================================================================================
; MENU
; ===================================================================================
$filemenu = GUICtrlCreateMenu("Fichier")
$newfile = GUICtrlCreateMenuItem("Nouveau", $filemenu)
$quit = GUICtrlCreateMenuItem("Quitter", $filemenu)
$aboutmenu = GUICtrlCreateMenu("?")
$about = GUICtrlCreateMenuItem("A propos", $aboutmenu)
; ===================================================================================
; CONTEXT MENU
; ===================================================================================
$contextMenu = GUICtrlCreateContextMenu()
$contextAbout = GUICtrlCreateMenuItem("A propos", $contextMenu)
$contextQuit = GUICtrlCreateMenuItem("Quitter", $contextMenu)
GUISetState()
; boucle principale pour recevoir les messages sur la GUI
While 1
$msg = GUIGetMsg()
Select
Case $msg = $newfile
MsgBox(0, "Nouveau", "test")
Case $msg = $quit Or $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $about
MsgBox(0, "About", "GUI Menu Test")
Case $msg = $contextQuit Or $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $contextAbout
MsgBox(0, "A propos", "A simple example with a context menu!")
EndSelect
WEnd
Re: [Problème] Entre la barre de menu et le menu contextuel
Posté : mer. 01 avr. 2009 08:12
par Tlem
@DakinQuelia
Pensez à lire ceci :
-
règles de présentation d'un message.
Et la coloration syntaxique du code est réservée aux forums :
Ensuite en ce qui concerne votre code, je partage la réponde d'orax.
Je suggère même de voir si le mode événementiel ne serait pas plus adapté à votre cas.
Voir ici :
http://www.autoitscript.fr/autoit3/docs ... ntMode.htm
Re: [..] Entre la barre de menu et le menu contextuel
Posté : mer. 01 avr. 2009 16:33
par DakinQuelia
Je te remercie Orax.
Tlem, j'avais lu le sujet des règles de présentation mais j'ai dû zapper la partie sur les forums. Désolé.
Encore merci pour tout à vous deux.