Я не понимаю использование функции connect() в конструкторе некоторых классов. Я думал, что это "подключение" событий с графической частью моей программы, но это делает меня одинаковым, если я не использую никакой функции соединения в конструкторе. Вот одна часть моего кода, например:
#include "VueOpenGL.h"
#include "wx/wx.h"
#include "wx/glcanvas.h"
#include "wx/progdlg.h"
using namespace std;
//Constructor of the class "VueOpenGL"
VueOpenGL::VueOpenGL(wxWindow* parent, wxSize const& taille, wxPoint const& position)
:wxGLCanvas(parent, wxID_ANY, position, taille,
wxSUNKEN_BORDER|wxFULL_REPAINT_ON_RESIZE|WX_GL_DOUBLEBUFFER)
{
//Events
Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(VueOpenGL::OnKeyDown));
}
...
void VueOpenGL::OnKeyDown(wxKeyEvent& event) {
switch(event.GetKeyCode()) {
case WXK_LEFT:
instructions_1;
break;
case WXK_RIGHT:
instructions_2;
break;
}
}
(Все прототипы находятся в VueOpenGL.h)
Вы не показываете нам все. Без Connect(wxEVT_KEY_DOWN)
события нажатия клавиши не будут доставлены вашему обработчику. Поэтому, если он все еще вызывается, он должен быть подключен каким-то другим способом или, может быть, вы просто не тестируете код, который, по вашему мнению, вы тестируете (например, восстановление после комментирования строки, содержащей Connect(), и вы все еще используете старую версия).