Menu

Résolu
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 - 21 déc. 2005 à 12:08
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 - 21 déc. 2005 à 23:04
Bonjour,

J'ai un menu dans mon programme (en haut de la fenêtre)
et je voudrais modifier juste le texte sans le supprimer/créer mais
juste modifier.

Je peux fournir à la fonction soit le texte d'origine ou soit l'id (comme ça vous arrange).



Je n'arrive pas à trouver la fonction ou du moins à l'utiliser.

J'ai essayé avec GetMenuItemInfo puis SetMenuItemInfo mais dans la
structure MENUITEMINFO je trouve pas où est stocké la chaine de
caractère contenant la désignation de l'item


Merci d'avance et bonne prog,
@++

Le créateur du site http://victorlogiciels.com

9 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
21 déc. 2005 à 23:00
HMENU hmenu = CreatePopupMenu();
AppendMenu(hmenu, MF_STRING, 40000, "Du texte");

MENUITEMINFO mii;
ZeroMemory(&mii, sizeof mii);
mii.cbSize = sizeof mii;
mii.fMask = MIIM_STRING;
mii.dwItemData = NULL;
GetMenuItemInfo(hmenu, 40000, FALSE, &mii);
// On a besoin de mii.cch + 1 octets, disons qu'ici 32 suffiront
mii.cch++;
char szText[32];
mii.dwTypeData = szText;
GetMenuItemInfo(hmenu, 40000, FALSE, &mii);
MessageBox(0, szText, szText, 0);
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
21 déc. 2005 à 12:44
Dans MENUITEMINFO il y a le champ dwTypeData pour le texte et cch pour la longueur (ne pas oublier de mettre le flag MFT_STRING)
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
21 déc. 2005 à 12:59
Bonjour,


HMENU hMenu = GetMenu(parent);


MENUITEMINFO lpmii;


GetMenuItemInfo(


hMenu,40619,FALSE,&lpmii);


MessageBox(hwnd,lpmii.dwTypeData,0,0);



Erreur !!!!


Merci et bonne prog,
@++

Le créateur du site http://victorlogiciels.com
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
21 déc. 2005 à 13:36
Tu oublies de remplir ta structure avant de la passer:
lpmii.cbSize = sizeof lpmii;
lpmii.fMask = MFT_STRING;

Le préfixe lp, on l'utilise plutot pour les pointeurs, ce qui n'est pas le cas ici
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
21 déc. 2005 à 17:21
Bonjour,


HMENU hMenu = GetMenu(parent);


MENUITEMINFO lpmii;


lpmii.cbSize = sizeof(lpmii);


lpmii.fMask = MFT_STRING;


GetMenuItemInfo(hMenu,40619,FALSE,&lpmii);


MessageBox(hwnd,lpmii.dwTypeData,0,0);



MessageBox -> ""

La messagebox n'affiche rien c'est normal ?




Merci et bonne prog,
@++

Le créateur du site http://victorlogiciels.com
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
21 déc. 2005 à 17:29
Tu veux récupérer le texte ou le modifier? Ce n'est pas pareil
Pour récupérer, il faut faire 2 appels à GetMenuItemInfo. Le premier pour connaitre la taille du texte (et allouer selon), et le deuxième pour récupérer effectivement le texte. Tout cela est bien exprimé dans MSDN
Vérifie à chaque fois ce que retourne GetMenuItemInfo pour savoir si ca a marché
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
21 déc. 2005 à 17:33
Bonjour,


Précisement je veux récupérer le texte et voir si il est celui que
j'attend et ensuite le modifier si il est bien celui que j'attends.

Aucune erreur n'est retournée quand je fais ça (!=0).

Je voulais faire un Get puis après le test de validité de la chaine, un Set.

Merci et bonne prog,
@++

Le créateur du site http://victorlogiciels.com
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
21 déc. 2005 à 22:23
Bonjour,


Je ne vais pas sur MSDN mais j'ai un fichier d'aide de Microsoft sur
les fonctions et j'aimerais bien que tu me dises avec du code comment
faire.

Merci et bonne prog,
@++

Le créateur du site http://victorlogiciels.com
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
21 déc. 2005 à 23:04
Bonjour,

Voilà ce qu'il me falait !


Merci beaucoup et bonne prog,
@++

Le créateur du site http://victorlogiciels.com
0
Rejoignez-nous