Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1488 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Changer le nom d'un item dans un menu (CMenu/MFC)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Changer le nom d'un item dans un menu (CMenu/MFC)

n°1715357
sebdino
Posté le 09-04-2008 à 22:50:04  profilanswer
 

Bonjour,
 
Je développe une application multi-langue SDI (Doc/vue) sous visual c++ 2003.
Je vais chercher dans un fichier ini différentes chaînes de caractères en fonction de la langue choisie par l'utilisateur.
Mon problème est que je n'arrive pas à traduire certains éléments du menu principal (les entêtes)
 
Voici ce que je fais (je n'ai mis la partie récupération de données dans le fichier ini pour clarifier le code)
Code dans la fonction OnInitialUpdate() de ma CFormView.
 
 CMenu* mMenu = AfxGetMainWnd()->GetMenu();
 UINT idMenu = mMenu->GetMenuItemID(0);
 mMenu->ModifyMenu(idMenu, MF_BYCOMMAND, idMenu, "Nouveau nom" );
 
En revanche cela fonctionne pour les sous menus :
 
 CMenu* subMenu = mMenu->GetSubMenu(0);
 idMenu = subMenu->GetMenuItemID(0);
 subMenu->ModifyMenu(idMenu, MF_BYCOMMAND, idMenu, "Txt sub menu" );
 
 
Merci d'avance pour vos réponses !
Seb.
 

mood
Publicité
Posté le 09-04-2008 à 22:50:04  profilanswer
 

n°1825603
gotgotv
Posté le 11-12-2008 à 16:19:27  profilanswer
 

sebdino a écrit :

Bonjour,
 
Je développe une application multi-langue SDI (Doc/vue) sous visual c++ 2003.
Je vais chercher dans un fichier ini différentes chaînes de caractères en fonction de la langue choisie par l'utilisateur.
Mon problème est que je n'arrive pas à traduire certains éléments du menu principal (les entêtes)
 
Voici ce que je fais (je n'ai mis la partie récupération de données dans le fichier ini pour clarifier le code)
Code dans la fonction OnInitialUpdate() de ma CFormView.
 
 CMenu* mMenu = AfxGetMainWnd()->GetMenu();
 UINT idMenu = mMenu->GetMenuItemID(0);
 mMenu->ModifyMenu(idMenu, MF_BYCOMMAND, idMenu, "Nouveau nom" );
 
En revanche cela fonctionne pour les sous menus :
 
 CMenu* subMenu = mMenu->GetSubMenu(0);
 idMenu = subMenu->GetMenuItemID(0);
 subMenu->ModifyMenu(idMenu, MF_BYCOMMAND, idMenu, "Txt sub menu" );
 
 
Merci d'avance pour vos réponses !
Seb.
 


n°1825608
gotgotv
Posté le 11-12-2008 à 16:26:18  profilanswer
 

sebdino a écrit :

Bonjour,
 
 CMenu* mMenu = AfxGetMainWnd()->GetMenu();
 UINT idMenu = mMenu->GetMenuItemID(0);
 mMenu->ModifyMenu(idMenu, MF_BYCOMMAND, idMenu, "Nouveau nom" );
 


 
Bonjour Seb,
Je travaille sur le le même sujet sur un vieux projet en visual C++ 6.0
Tu m'as mis sur la piste, pour arriver au bon résultat tu ne peux pas utiliser de idMenu car le menu principal n'en possède pas donc mMenu->GetMenuItemID(0) ne fonctionne pas.
Il faut donc écrire :
mMenu->ModifyMenu(0, MF_BYPOSITION, 0, "Nouveau nom" ); pour le premier menu
mMenu->ModifyMenu(1, MF_BYPOSITION, 1, "Nouveau nom" ); pour le deuxième, etc.
 
Vincent


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Changer le nom d'un item dans un menu (CMenu/MFC)

 

Sujets relatifs
Faire un menu dynamique[CSS] Mon menu se dérobe
ajouter une option dans le menu contextuel d'un JFileChooserChanger droits d'accès ACL des imprimantes
Install de SQL 2005 + changer le nom de machine = plus rien ne marche[DELPHI] Changer le contenu d'une form
modifier la hauteur de ma balise menu dt[dumb girl asking] fermer des onglets et détruire des choses
Menu déroulantMenu déroulant en XHTML/CSS (sans JS), compatible IE6 : Possible ?
Plus de sujets relatifs à : Changer le nom d'un item dans un menu (CMenu/MFC)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR