2016-08-03 12 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

いいえ、私はここに示されたコードで何か間違っているとは思わないので、何が間違っているのか分かりません。いつものように、[minimal sample](https://github.com/wxWidgets/wxWidgets/tree/v3.1.0/samples/minimal/minimal.cpp)のような既存のwxWidgetsサンプルで問題を再現しようとすると、 、問題を絞り込むことができます。 XRCを使用しているのか、XRCを使用しているのかなどに関係があるかどうかは、少なくともわかります。 –

関連する問題