[MFC] Problème avec un menu dynamique

Problème avec un menu dynamique [MFC] - C++ - Programmation

Marsh Posté le 20-04-2002 à 00:36:40    

J'ai actuellement une application MFC sdi qui a un menu simple et dynamiquement je veux lui rajouter des menus et sous-menus.
 
Et j'ai des phénomènes bizarres !
Je pars donc d'une appli simple MFC (sdi) et dans le fichier MainFrm.cpp dans la fonction OnCreate() je rajoute juste ce code :
" CMenu*   pMenu=GetMenu();
 CMenu*   pNewMenu;
 int   pos;
 
 pMenu->AppendMenu( MF_STRING, 0, "Coucou" );
 pos = pMenu->GetMenuItemCount();
 pNewMenu = pMenu->GetSubMenu( pos-1 );
"
 
Lorsque je lance mon application j'ai bien un nouveau menu coucou, mais par contre, la variable pNewMenu est à NULL !!!!
Hors j'ai besoin de récupérer un pointeur vers ce nouveau sous-menu pour pouvoir le remplir de fonctions.
 
Es-ce que quelqu'un pourrait m'aider ?
Pour répondre d'avance à quelques questions : Oui j'ai absolument besoin de faire la création d'une partie du menu en dynamique et je ne peux pas utiliser le ressource view.
 
Leander

Reply

Marsh Posté le 20-04-2002 à 00:36:40   

Reply

Marsh Posté le 20-04-2002 à 11:30:36    

C'est normal.
 
AppendMenu(MF_STRING, 0, "Coucou" ) ajoute un item à ton menu, et non un sous-menu. Donc, comme GetSubMenu cherche un sous menu et qu'il trouve un item, il te renvoie un NULL.
 
Solution : créer un sous menu correctement.
 
Créé d'abord ton sous-menu, puis "colle" le au menu existant via AppendMenu :
 
AppendMenu(MF_POPUP, Ton_Menu, "Coucou" )
 
Ton_Menu est le HMENU du sous-menu créé.

Reply

Marsh Posté le 20-04-2002 à 12:45:13    

merci ! maintenant ça marche.
 
Juste une dernière petite question sur les menus. Es-ce que tu sais comment on fait pour activer le tooltips sur un item d'un menu ?
(et par la même occasion, sur un bouton d'un toolbar créer aussi dynamiquement)

Reply

Marsh Posté le 20-04-2002 à 20:14:14    

Ravi que ça fonctionne :)
 
Non, je n'ai jamais essayé d'attacher un tooltip à un menu, en fait je n'y ai jamais pensé :)  
 
Essaie de regarder ici, ça pourra peut être t'aider
 
http://msdn.microsoft.com/library/ [...] l_Tips.asp
 
 :hello:

Reply

Marsh Posté le 21-04-2002 à 14:43:59    

en fait, quand je parlais de tooltips, c'est d'afficher un message dans la barre d'état lorsque l'on selectionne le menu.
 
J'ai essayé de répondre au message MENU_SELECT et en fonction de l'ID du menu d'afficher un message dans la barre d'état avec la fonction SetPaneText, mais ça ne marche pas. Le message ne s'affiche pas.
 
Et même si je réponds au message COMMAND_UI de la barre d'état, je n'arrive toujours pas à mettre un message dans la barre d'état..
voici mon code :
 
ON_UPDATE_COMMAND_UI(ID_VIEW_STATUS_BAR, OnUpdateViewStatusBar)
 
void CMainFrame::OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu)  
{
 CFrameWnd::OnMenuSelect(nItemID, nFlags, hSysMenu);
 
 // TODO: Add your message handler code here
 if (nItemID == 100)
 {
  szStatus = "coucou";
//  m_wndStatusBar.SetPaneText( 0, szStatus, TRUE );
 }
}
 
void CMainFrame::OnUpdateViewStatusBar(CCmdUI* pCmdUI)  
{
 // TODO: Add your command update UI handler code here
 pCmdUI->Enable();
 pCmdUI->SetText( szStatus );
 
}

Reply

Marsh Posté le 21-04-2002 à 18:17:21    

personne n'a une petite idée ?

Reply

Sujets relatifs:

Leave a Replay

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