wxFrame principal et pushEvtHandler
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:
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:
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:
1 2
|
extern wxFrame *myMainFrame; |
avec un include "main.h" dans myEvtHandler.cpp, mais le link échoue avec le message suivant :
Code:
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.
j'ai pu me passer de la variable globale et du passage par argument
merci pour ton conseil.
J'ai pu eviter les 2 possibilités (le passage par variable globale etant très cracra, je sais bien):
J'ai tenté SetEvtHandlerEnabled(true); à l'initialisation de ma classe derivant de wxEvtHandler, et mon EvtHandler tourne à merveille.
Je trouve bien dommage que la doc de wxWidgets soit aussi enorme et pourtant n'est pas clair à tous les coups.
D'ailleurs je vais de ce pas créer un autre post pour un autre probleme (wxLogTrace) pour lequel je ne trouve aucune explication.
Merci