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).
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()
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
4
BEGIN_EVENT_TABLE(myEvtHandler, wxEvtHandler)
EVT_SOCKET(SERVER_ID,  myEvtHandler::OnServerEvent)
EVT_SOCKET(SOCKET_ID,  myEvtHandler::OnSocketEvent)
END_EVENT_TABLE()
ces morceaux de code etant dans les .cpp respectifs.

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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
extern wxFrame *myMainFrame;
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
C:/MinGW/include/c++/3.4.5/bits/stl_iterator.h:(.bss+0x0): multiple definition of `myMainFrame'
Et je ne souhaite pas passer le pointeur en parametre d'entree du contructeur de toutes les classes susceptibles d'en avoir besoin.

Alors comment faites-vous pour ajouter de nouveau event handlers dans la pile principale d'handlers?

Merci de votre aide.