Bonsoir,
je ne comprends pas comment utiliser le pushEvtHandler quand d'autres event handlers sont implementés dans d'autres fichiers source que celui du main.
En effet, j'ai fait une classe myFrame derivant de wxFrame (dans main.h) avec sa table d'event. Cette classe est instanciée ' l'initialisation de mon appli (fortement inspiré de l'example event de wxWidgets).
Dans un autre fichier j'ai une classe derivant de wxEvtHandler avec sa table d'event (fortement inspiré de l'example event de wxWidgets aussi et de sockets).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(SERVER_QUIT, MyFrame::OnQuit) END_EVENT_TABLE()
ces morceaux de code etant dans les .cpp respectifs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 BEGIN_EVENT_TABLE(myEvtHandler, wxEvtHandler) EVT_SOCKET(SERVER_ID, myEvtHandler::OnServerEvent) EVT_SOCKET(SOCKET_ID, myEvtHandler::OnSocketEvent) END_EVENT_TABLE()
Or, je veux faire le pushEvHandler dans le constructeur de myEvtHandler mais il me faut le pointeur sur l'instance de MyFrame. j'ai tenté un pointeur global declaré dans main.h
avec un include "main.h" dans myEvtHandler.cpp, mais le link échoue avec le message suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2extern wxFrame *myMainFrame;
Et je ne souhaite pas passer le pointeur en parametre d'entree du contructeur de toutes les classes susceptibles d'en avoir besoin.
Code : Sélectionner tout - Visualiser dans une fenêtre à part C:/MinGW/include/c++/3.4.5/bits/stl_iterator.h:(.bss+0x0): multiple definition of `myMainFrame'
Alors comment faites-vous pour ajouter de nouveau event handlers dans la pile principale d'handlers?
Merci de votre aide.
Partager