использование функции connect () в конструкторе

0

Я не понимаю использование функции 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)

  • 0
    Ну, ты пробовал, что происходит, когда ты нажимаешь клавишу? События предназначены не для того, чтобы что-то отображать на экране, а для предоставления (пользовательского) ввода тем частям вашей программы, которые им занимаются.
  • 0
    @datenwolf Да, я имел в виду, что когда я нажимаю клавишу, все происходит так, как будто в конструкторе не было никакого «Connect» ... Итак, мой вопрос: когда мне нужно использовать connect?
Теги:
opengl
events
wxwidgets

1 ответ

1

Вы не показываете нам все. Без Connect(wxEVT_KEY_DOWN) события нажатия клавиши не будут доставлены вашему обработчику. Поэтому, если он все еще вызывается, он должен быть подключен каким-то другим способом или, может быть, вы просто не тестируете код, который, по вашему мнению, вы тестируете (например, восстановление после комментирования строки, содержащей Connect(), и вы все еще используете старую версия).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню