Bonjour à Tous,
j'ai un souci qui m'intrigue beaucoup.
Dans mon projet, j'ai créé une première classe dérivant de wxEvtHandler avec une classe dérivant de wxCommandEvent afin de personnaliser l'event associé. Le nouveau type d'event est déclaré avec la macro "DECLARE_EVENT_TABLE_ENTRY(...)", le handler déclaré avec "DECLARE_EVENT_TABLE()" et l'event est associé à une fonction avec "BEGIN_EVENT_TABLE(myHandler, wxEvtHandler)" et "EVT_MYFIRSTEVENT(wxID_ANY, myHandler::OnFirstEvent)"
Dans le constructeur de myHandler, j'appelle "SetEvtHandlerEnabled(true);"
Tous les events envoyés par "wxPostEvent(myHandlerPointer, event);" sont bien reçus et traités par OnFirstEvent().
Par la suite, je crée une autre classe dérivant de wxEvtHandler avec une autre classe dérivant de wxCommandEvent. Et la fonction associée est déclarée de la même manière.
Je décide donc d'envoyer des events par wxPostEvent() : RIEN dans le traitement de l'event.
je tente AddPendingEvent() : RIEN.
Par contre, avec le debugger, je vois bien la queue de message s'allonger (wxEvtHandler.m_pendingEvents.wxObjectList.wxListBase.m_count s'incrémente à chaque appel à wxPostEvent ou AddPendingEvent)
Et, quand je tente ProcessEvent(): Mes events sont traités comme voulus dans la fonction associée à l'event.
Je ne comprends pas pourquoi avec le 1er handler, je peux envoyer mes messages par wxPostEvent et qu'avec le second non. Je souhaite conserver le principe de queue de message et j'ai lu que ProcessEvent était comme appeler directement la fonction associée.
Quelqu'un a-t-il déjà été confronté à ce type de problème?
Merci de votre aide.
Partager