2016-08-03 28 views
-1

Ich hatte versucht, DECLARE_EVENT_TABLE() & & Connect(), aber es funktioniert nicht.Mein Code einfach so.Wie es funktioniert zu machen?Wie wird das MENU_SELECTED-Ereignis in einer geerbten wxMenuBar beantwortet?

//.h 
     class MainFrameMenuBar :public wxMenuBar 
//... 
     private: 
      DECLARE_EVENT_TABLE(); 
     }; 
/... 
    //.cpp 
     BEGIN_EVENT_TABLE(MainFrameMenuBar, wxMenuBar) 
      EVT_MENU(XRCID("ID_MENU_FIGURE"), MainFrameMenuBar::onMenuItemFigure) 
     END_EVENT_TABLE() 

     MainFrameMenuBar::MainFrameMenuBar(wxWindow* parent) 
     { 
      wxXmlResource::Get()->LoadMenuBar(parent,wxT("ID_MAIN_MENUBAR")); 
      //int id = XRCID("ID_MENU_FIGURE"); 
      //Connect(id, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MainFrameMenuBar::onMenuItemFigure), NULL, this); 
     } 

     void MainFrameMenuBar::onMenuItemFigure(wxCommandEvent& event) 
     { 
      printf("abc"); 
     } 

Antwort

0

Diese verwendet bei älteren WxWidgets Versionen gebrochen werden und man musste Menü Ereignisse nur in der wxFrame enthält die Menüleiste und die Menüleiste nicht selbst zu handhaben, aber es sollte fixed einige Zeit ganz her sein, so Vielleicht müssen Sie upgraden?

Wenn Sie eine Version verwenden, die von diesem Fehler betroffen ist und nicht aktualisieren kann, ist die Behandlung der Ereignisse im Frame die einfachste Problemumgehung.

+0

Ich benutze Version 3.1.0. Gibt es etwas anderes falsch? – youzhiwan

+0

Nein, ich sehe in dem hier gezeigten Code nichts falsch, also weiß ich nicht, was falsch sein könnte. Wie immer, wenn Sie versuchen könnten, das Problem in einem vorhandenen wxWidgets-Beispiel wie dem [minimal sample] (https://github.com/wxWidgets/wxWidgets/tree/v3.1.0/samples/minimal/minal.cpp) zu reproduzieren. , könnte es das Problem eingrenzen, z wir würden zumindest wissen, ob es mit der Verwendung von XRC oder unabhängig davon zu tun hat usw. –