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

Changer le nom d'un item dans un menu (CMenu/MFC) - C++ - Programmation

Marsh Posté le 09-04-2008 à 22:50:04    

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.
 

Reply

Marsh Posté le 09-04-2008 à 22:50:04   

Reply

Marsh Posté le 11-12-2008 à 16:19:27    

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.
 


Reply

Marsh Posté le 11-12-2008 à 16:26:18    

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed