Bonjour,
afin de structurer un peu mon code j'ai decider de creer une classe propre a la menu bar afin que celle ci ne soit pas dans MainFrame.cpp.
Le problème c'est que je n'ai plus d'events qui marche et je ne comprend pas du tout pk! Et dans tous les exemples que je lis l'EVENT_TABLE se trouve soit dans un heritier de wxFrame soit dans un heritier de wxPanel. J'aimerais donc savoir si il est possible de d'utiliser EVENT_TABLE depuis un autre type de classe ??? (Et si son utilisation est bien limitée aux classes héritant de wxEvtHandler)
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 /* MainMenuBar.hpp */ class MainMenuBar: public wxMenuBar { public: MainMenuBar(wxFrame* wparent); virtual ~MainMenuBar(); void OnQuit(wxCommandEvent& event); void OnAbout(wxCommandEvent& event); void OnProperties(wxCommandEvent& event); private: wxFrame* wparent; wxMenu *menuFile; wxMenu *menuPref; wxMenu *menuHelp; DECLARE_EVENT_TABLE() };
J'ai aussi essayer avec Connect au lieu de EVENT_TABLE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 /*MainMenuBar.cpp */ #include "MainMenuBar.hpp" BEGIN_EVENT_TABLE(MainMenuBar, wxMenuBar) //File Menu EVT_MENU(wxID_EXIT, MainMenuBar::OnQuit) //Preferences Menu EVT_MENU(wxID_PROPERTIES,MainMenuBar::OnProperties) //Help Menu EVT_MENU(wxID_ABOUT, MainMenuBar::OnAbout) END_EVENT_TABLE() MainMenuBar::MainMenuBar(wxFrame *wparent): wparent(wparent) { //File Menu menuFile = new wxMenu(); menuFile->Append(wxID_EXIT, _T("E&xit") ); this->Append(menuFile,_T("&File") ); //Preference Menu menuPref = new wxMenu(); menuPref->Append(wxID_PROPERTIES,_T("&Properties")); this->Append(menuPref,_T("Preferences")); //Help Menu menuHelp = new wxMenu(); menuHelp->Append(wxID_ABOUT, _T("&About...") ); this->Append(menuHelp,_T("Help")); } void MainMenuBar::OnQuit(wxCommandEvent& WXUNUSED(event)) { wparent->Close(TRUE); } void MainMenuBar::OnProperties(wxCommandEvent& WXUNUSED(event)) { Properties *prop = new Properties(wparent); prop->Show(true); } void MainMenuBar::OnAbout(wxCommandEvent& WXUNUSED(event)) { wxString msg(_T("Vicia - Version 0.1")); wxMessageBox(msg, wxT("About Vicia"), wxOK | wxICON_INFORMATION, this); }
mais visiblement ca ne marche pas non plus
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 MainMenuBar::MainMenuBar(wxFrame *wparent) { ... this->Connect(wxID_PROPERTIES,wxEVT_MENU_OPEN,wxCommandEventHandler(MainMenuBar::OnProperties)); }
Voila et merci encore
Partager