Page 1 sur 1

[R] Récupérer Index Item d'un menu

Posté : mer. 15 oct. 2014 15:40
par Hugues
Bonjour,

J'aimerai savoir comment récupérer le text d'un Item d'un menu?

Je crée un menu à partir d'un fichier *.ini (une partie, les autres sont en dur dans mon script ^^), mais vu que le crée je ne peux plus (ou vois pas comment) utiliser la fonction Func WM_COMMAND()

Voici mon code:
► Afficher le texte
et la partie WM_COMMAND
► Afficher le texte
Merci par avance.

Re: [..] Récupérer Index Item d'un menu

Posté : mer. 15 oct. 2014 19:32
par orax
À la ligne

Code : Tout sélectionner

_GUICtrlMenu_InsertMenuItem($hLineChoice, $j - 1 , "&" & $ReadSection[$j][1], "$e_id" & $ReadSection[$j][0], $ReadSection[$j-1][0])
le 4ème paramètre "$e_id" & $ReadSection[$j][0] n'est pas un nombre, c'est une chaîne. Il faudrait utiliser eval() pour obtenir la valeur de $e_id... (si c'est bien une variable), mais eval reste déconseillé.
► Afficher le texteexemple

Re: [..] Récupérer Index Item d'un menu

Posté : mer. 15 oct. 2014 23:22
par mikell
Si le nombre de clés tirées du ini peut varier, tu peux aussi essayer de stocker les itemID dans une array
► Afficher le texte

Re: [..] Récupérer Index Item d'un menu

Posté : jeu. 16 oct. 2014 10:04
par Hugues
Bonjour, merci à vous 2 :mrgreen:

J'ai presque reussi, j'arrive bien à récupérer mes indes, maintenant c'est avec la partie WM_COMMAND que j'ai un soussaille...

Je voudrais que une fois l'index récupéré, je fasse une boucle qui me récupére la cléf correspondant à l'index contenu dans mon fichier ini pour lancer ma fonction.

Ci joint mon code fonctionnel avec le fichier ini.

Code:
► Afficher le texte
Fichier ini:
► Afficher le texte
Merci par avance

Re: [..] Récupérer Index Item d'un menu

Posté : jeu. 16 oct. 2014 11:06
par Hugues
Bon, j'ai encore presque reussi de ce que je voulais :mrgreen:

Sauf que maintenant c'est au niveau de la gestion des autres menu qui se croisent au niveau des index... pfff

Par exemple, si je séléctionne "Fichier" puis "fermer l'application, il va m'ouvrir un array alors que moi je veux que l'application se ferme...

Erreur:
► Afficher le texte
Mon code complet:
► Afficher le texte

Re: [..] Récupérer Index Item d'un menu

Posté : jeu. 16 oct. 2014 15:39
par mikell

Code : Tout sélectionner

    $itemID = _WinAPI_LoWord($wParam)
    Select
        Case $itemID   ; et là ysspass quoi si $itemID = $e_idExit ?
:mrgreen:

Re: [..] Récupérer Index Item d'un menu

Posté : jeu. 16 oct. 2014 16:20
par Hugues
Bin c'est le caca... Le problème c'est que j'ai créé des ComboBox et quand je clic dessus ca me renvoie des Index... Et qui me mette le bazard, donc j'ai fais ça pour "éliminer" les contrôles qui ont un Index < 1000
► Afficher le texte

Re: [..] Récupérer Index Item d'un menu

Posté : jeu. 16 oct. 2014 18:02
par mikell
?

Code : Tout sélectionner

    $itemID = _WinAPI_LoWord($wParam)
    Select
         Case $itemID = $e_idExit
            Exit
        Case ($itemID > 999) AND ($itemID <> $e_idExit)
            For $i = 0 to UBound($IDMenu) - 1
                 If $itemID = $IDMenu[$i] Then ConsoleWrite($ReadSection[$i][1] & @crlf)
            Next
    EndSelect

Re: [..] Récupérer Index Item d'un menu

Posté : jeu. 16 oct. 2014 18:44
par Hugues
Bin non, car si tu testes mon code, tu verras que lorsque tu sélectionnes l'item "Fermer application", il retourne un index 2 et si tu sélectionnes l'item "ABS9 ligne 1" du menu Choix de la ligne, il retourne lui aussi un index 2... donc dans le cas

Code : Tout sélectionner

Select
         Case $itemID = $e_idExit
            Exit
bin ca ne marche pas...

Re: [..] Récupérer Index Item d'un menu

Posté : jeu. 16 oct. 2014 19:10
par orax
C'est normal. $e_idExit = 1002 et l'ID dans $IDMenu pour "ABS9 ligne 1" = 1002 aussi.
J'ai changé, dans la boucle For, l'ID de début (j'ai mis 1100 au lieu de 1000) pour éviter un conflit.
► Afficher le texte

Re: [R] Récupérer Index Item d'un menu

Posté : jeu. 16 oct. 2014 20:20
par Hugues
Ok impeccable, merci à vous 2! :mrgreen: