segunda-feira, 22 de agosto de 2011

wxWidgets: Começando com wxApp


Hoje escreveremos nosso primeiro programa em wxWidgets, na verdade ele não terá função nenhuma, apenas criaremos uma instância de programa e a fecharemos. O objetivo é apenas explicar como funciona wxApp.

Vamos ao código:

Primeiro vamos escrever o arquivo de cabeçalho que eu chamei de “main.h”.



//Arquivo main.h
//Tutorial wxApp parte – 1 do blog http://wxnewbie.blogspot.com

//Aqui eu adicionei o arquivo de cabeçalho do wxWidgets, ou seja, “wx.h”...
#include <wx/wx.h>

//Aqui crio uma classe publica chamada wxAppTutorial, que é derivada de wxApp...
class wxAppTutorial: public wxApp
{
    public:
        //Aqui eu declaro a função OnInit(), que é uma cópia da mesma função
        //encontrada na classe wxApp...
        bool OnInit(void);
};//Não se esqueça de colocar o ";" no final da declaração das classes...

Agora o arquivo de implementação “main.cpp”

//Arquivo main.cpp
//Tutorial wxApp parte – 1 do blog http://wxnewbie.blogspot.com

//Aqui eu adiciono o arquivo de cabeçalho “main.h”, que criei com as declarações.
#include “main.h”

//Aqui eu implemento a função OnInit()...
//Lembre-se que ela é do tipo bool e pertence a classe wxAppTutorial...
bool wxAppTutorial::OnInit(void)
{

	//...Tudo que eu colocar aqui será inicializado com o programa...//

	//Aqui eu preciso retornar um valor booleano
	//Coloco como false para finalizar o programa
	//Se eu colocar como true, o programa continuará rodando
	//até que seja executado um comando para fechá-lo...
	return false;
}

//Neste ponto eu executo a macro IMPLEMENT_APP(wxAppTutorial)
//Para mostrar ao wxWidgets como criar uma instância da sua classe de aplicativo.
IMPLEMENT_APP(wxAppTutorial) //Não é necessário colocar o ";" para finalizar MACROS...


Para entendermos melhor como o código todo funciona, vamos pensar da seguinte maneira:

Quando criamos uma classe derivada de wxApp, estamos criando a classe que representa a nossa aplicação em si, quando implementamos a função OnInit(), mostramos como iniciar o processamento do aplicativo, mas isto tudo não é suficiente para que o sistema rode, precisamos mostrar ao wxWidgets que esta classe é a responsável pela criação da instância do seu aplicativo, e fazemos isto com IMPLEMENT_APP().

Uma coisa que deve ficar clara no exemplo, é que eu apenas setei o “return” da função “OnInit()” como “false” para que o programa não fique rodando em background sem termos como pará-lo usando a própria aplicação, se você colocar este valor como true, não haverá problema algum, você apenas terá que fechar o programa usando o gerenciador de processos do seu sistema operacional.

Nos próximos tutoriais, irei mostrar algumas outras coisas que podem ser feitas usando wxApp.


Até a próxima.

0 comentários:

Postar um comentário