2016-08-03 4 views
-1

DECLARE_EVENT_TABLE()을 시도했습니다. & & Connect(),하지만 작동하지 않습니다. 내 코드가 this.How로 작동하도록 만드시겠습니까? 그래서,상속 된 wxMenuBar에서 MENU_SELECTED 이벤트에 응답하는 방법?

//.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

아니요, 여기에 표시된 코드에서 아무 것도 잘못 보이지 않으므로 잘못된 것일 수 있습니다. 언제나 그렇듯이, [최소 샘플] (https://github.com/wxWidgets/wxWidgets/tree/v3.1.0/samples/minimal/minimal.cpp)과 같은 기존 wxWidgets 샘플에서 문제를 재현하려고하면, , 문제를 좁힐 수있다. XRC를 사용하거나 XRC를 사용하는 것과 관련이 있는지 여부는 적어도 알 수 있습니다. –

관련 문제