2016-08-03 6 views
-1

Я пробовал DECLARE_EVENT_TABLE() & & Connect(), но он не работает. Мой код просто так. Как заставить его работать?Как реагировать на событие MENU_SELECTED в унаследованном wxMenuBar?

//.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"); 
     } 

ответ

0

Это используется для быть разорван в старых версиях WxWidgets и нужно было обрабатывать события меню только в wxFrame содержащий строку меню, а не сам бар меню, но это должно было быть fixed некоторое время назад, так возможно, вам нужно обновить?

Если вы используете версию, затронутую этой ошибкой и не можете обновить, обработка событий в кадре является самым простым способом.

+0

Я использую версию 3.1.0. Что-то другое не так? – youzhiwan

+0

Нет, я не вижу ничего неправильного в приведенном здесь коде, поэтому я не знаю, что может быть неправильным. Как всегда, если вы попытаетесь воспроизвести проблему в существующем образце wxWidgets, например [минимальный образец] (https://github.com/wxWidgets/wxWidgets/tree/v3.1.0/samples/minimal/minimal.cpp) , это может сузить проблему, например мы бы по крайней мере знали, связано ли это с использованием XRC или независимо от него и т. д. –

 Смежные вопросы

  • Нет связанных вопросов^_^