Manipulação de eventos é uma parte indispensável em qualquer sistema que utilize interface gráfica. Eventos normalmente vêm de ações executadas pelo usuário sobre o sistema, como o clique em um botão, o pressionamento de uma tecla, etc, mas também podem ser gerados de outras formas, como pelo manipulador de janelas, o timer, etc.
Tradicionalmente wxWidgets trabalha com eventos através da manipulação de uma tabela de eventos estática, diferentemente do modo como foi apresentado no post anterior com o método Connect, que é uma forma mais moderna e prática de tratar eventos com wxWidgets.
Exemplo
Utilizando tabela de eventos o exemplo do post anterior ficaria assim:
#include <wx/wx.h>
//frame.h
class MeuFrame : public wxFrame {
private:
wxPanel *painel;
wxButton *btnsair;
wxStaticText *label;
DECLARE_EVENT_TABLE() // Declaramos a tabela de eventos com a macro
//DECLARE_EVENT_TABLE()
public:
MeuFrame(const wxString &titulo);
void Sair(wxCommandEvent &evt);
};
#include "frame.h"
//frame.cpp
MeuFrame::MeuFrame(const wxString& titulo):
wxFrame(NULL, wxID_ANY, titulo, wxDefaultPosition, wxSize(500, 400))
{
painel = new wxPanel(this, wxID_ANY);
label = new wxStaticText(painel, -1, wxT("Meu Primeiro Programa com wxWidgets"), wxPoint(100, 200));
btnsair = new wxButton(painel, wxID_EXIT, wxT("Sair"), wxPoint(200, 250), wxSize(50, 30));
// Connect(wxID_EXIT, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MeuFrame::Sair));
btnsair->SetFocus();
Centre();
}
void MeuFrame::Sair(wxCommandEvent &evt) {
//fecha a aplicação
Close(true);
}
//Esta macro inicia a tabela de eventos
BEGIN_EVENT_TABLE(MeuFrame, wxFrame)
/*Aqui através da macro EVT_BUTTON nós atribuímos o método sair ao botão com id =
wxID_EXIT, isto é, o método sair será chamado quando o botão for clicado, onde
EVT_BUTTON indica o tipo de evento. */EVT_BUTTON(wxID_EXIT, MeuFrame::Sair)
//Esta macro finaliza a tabela de eventos
END_EVENT_TABLE()
Nenhum comentário:
Postar um comentário