Mostrando postagens com marcador wxWidgets Básico. Mostrar todas as postagens
Mostrando postagens com marcador wxWidgets Básico. Mostrar todas as postagens

terça-feira, 30 de agosto de 2011

wxWidgets – Usando argc e argv em wxApp

Continuando com o tutorial básico de wxWidgets, hoje vou explicar como utilizar argc e argv de wxApp.

São valores que são passados na inicialização de programas, onde argc me retorna o número de argumentos passados e argv os valores dos argumentos.

Utilizando o mesmo código anterior de wxApp, vamos ver como funciona:

Vou criar um novo projeto, onde o executável está em /home/alex/Documentos/wxapp_tuto/tuto_wxapp/bin/Debug

Vamos ao código:

//main.h
#include <wx/wx.h>

class wxAppTuto: public wxApp
{
    public:
        bool OnInit(void);
};

//main.cpp
#include “main.h”
bool wxAppTuto::OnInit()
{
    //Aqui eu pego o valor de argc e argv...
    //Lembre-se que eles são membros de wxApp
    int get_argc = argc;
    wxString get_argv = *argv;

    //Aqui mostro estes valores em um wxMessageBox
    wxMessageBox(wxString::Format(wxT("Números de parâmetros - %d \n\n Valores - "), get_argc) + get_argv);
    return false;
}

IMPLEMENT_APP(wxAppTuto)

O resultado da execução do programa será o seguinte:


Vejam que mesmo eu não tendo passado nenhum valor na inicialização ele me retornou um valor, que é o caminho completo para o executável, este valor sempre será apresentado no primeiro valor...

Agora vamos alterar um pouco o código para pegarmos todos os argumentos que possam ser passados:

//main.cpp
#include “main.h”
bool wxAppTuto::OnInit()
{
    int get_argc = argc;

    wxString get_argv;

    //Aqui eu pego o número de argumentos e vou adicionando
    //cada um deles a wxString get_argv...
    for(int i = 0; i < argc; i++)
    {
        get_argv += wxString::Format(wxT("%s\n"), argv[i]);
    }

    wxMessageBox(wxString::Format(wxT("Números de parâmetros - %d \n\n Valores - "), get_argc) + get_argv);
    return false;
}

Agora vou reabrir o programa pela linha de comando da seguinte maneira.

//tuto_wxapp é o nome do executável...
./tuto_wxapp teste1 teste2 teste3

O resultado será o seguinte:


Veja que ele pegou cada um dos valores em um argumento, se fossemos passar uma string com espaços precisaríamos apenas passar este valor entre aspas como em “teste tutorial wxApp”.

./tuto_wxapp “teste tutorial wxApp”


Uma aplicação prática, seria quando abrimos um arquivo usando o “Abrir com...” diretamente pelo nosso programa, quando fazemos isto, o caminho para este arquivo é passado no argumento, se tentarmos abrir vários arquivos de uma vez serão passados vários argumentos, pegaríamos cada um deles e passaríamos para o sistema, isto é útil se tivermos criando um programa para exibir imagens ou um editor de textos por exemplo.

Espero que aproveitem a explicação e até a próxima.

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.

sexta-feira, 19 de agosto de 2011

wxWidgets – Utilizando o Projeto Base

Hoje vamos ver como iniciar um novo projeto tomando como base o projeto criado no tutorial anterior.

1 – Abra o Visual C++.

2 – Crie uma pasta em algum local do seu computador para salvar o projeto.

3 – Abra o projeto que você criou que foi explicado aqui.

4 – Remova os arquivos “minimal.cpp” e “sample.rc”.


5 – Salve tudo, em “File”->”Save All”.

Será criado um arquivo com a extensão “*.sln”, clique em salvar.


6 – Agora vamos criar o novo projeto, clique sobre o nome do projeto e vá em “File”->“Save minimal As”, selecione a pasta que você criou e digite um nome qualquer, no meu caso, será “tutorial_sqlite3”, pois vou usá-lo para os tutoriais do sqlite3.




7 – Feche o projeto “minimal” e quando for perguntado se você quer salvar este projeto, clique em “NO”, não se esqueça de sempre que for criar um projeto novo a partir deste, nunca salvar o projeto “minimal”.

8 – Agora vamos abrir o diretório onde você salvou o projeto novo.

Clique com o botão direito do mouse sobre o arquivo de projeto e selecione abrir com o bloco de notas.

Por padrão, o bloco de notas não é um aplicativo indicado pelo Windows para abrir arquivos “*.vcproj”, você deve selecioná-la usando a opção “Escolher programa padrão...”.


9 – Com o programa aberto no Bloco de Notas, vá em “Editar”->”Substituir”, 


No campo Localizar: coloque “minimal”

Em Substituir por: coloque o nome do seu novo projeto (no meu caso “tutorial_sqlite3”)
Clique em “Substituir Tudo”


Feche esta janela, salve o arquivo e feche o Bloco de Notas.

O projeto está pronto para ser utilizado, no próximo tutorial iremos começar a explicação sobre o sqlite3.
Até a próxima.

Vídeo com as explicações.

quinta-feira, 18 de agosto de 2011

wxWidgets: Criando um projeto base no Visual C++

1 – Abra o Visual C++;

2 – Clique no menu: “File -> Open -> Project/Solution”


3 – Procure o projeto de exemplo chamado “minimal” no local onde o wxWidgets foi instalado, deve estar no caminho:

“C:\SourceCode\Libraries\wxWidgets2.8\samples\minimal”

Abra o arquivo “minimal.dsp”.


No diálogo que aparece, clique em Yes To All


Clique com o botão direito do mouse sobre “minimal” no canto esquerdo superior e depois clique em “Properties”


Na janela “minimal Property Pages” clique em “Configuration Manager...”, veja se a configuração atual está como “Debug”, se não estiver selecione está opção e clique em “Close”


No lado esquerdo da janela “minimal Property Pages” procure “Configuration Properties”-> “C/C++” -> “General”.

Na opção “Additional Include Directories” clique em “...”



Substitua os seguintes valores:

“.\..\..\lib\vc_lib\mswd” por “$(WXWIN)\lib\vc_lib\mswd”

“.\..\..\include” por “$(WXWIN)\include”

Veja que o que fizemos foi trocar o caminho “.\..\..” pelo valor da variável do sistema que criamos aqui, ou seja, $(WXWIN).

E delete a linha “.\..\..\samples”.

Clique em “OK”.

Deve ficar assim:


Agora em linker, vamos configurar o valor alterarando o caminho para a biblioteca do wxWdigets.


Altere o valor “.\..\..\lib\vc_lib” por “$(WXWIN)\lib\vc_lib”



Faça a mesma configuração para a opção Release, antes de fechar, se assim desejar, só não se esqueça de manter o caminho correto para as pastas include:
“.\..\..\lib\vc_lib\msw” por “$(WXWIN)\lib\vc_lib\msw”, veja que agora eu uso o caminho para a biblioteca estática em release, ou seja, sem o "d" no final.

Agora vamos salvar este projeto em um local diferente, lembre-se que sempre que iniciarmos um novo projeto, usaremos este como base.
No meu caso, eu criei uma pasta no Desktop com o nome “projetobase”.
Clique sobre o “minimal” em “Solution Explorer”, vá no menu “File”->”Save minimal As”

Selecione o diretório onde você irá salvar o projeto base e clique em “Salvar”.

Agora uma coisa muito importante, feche o projeto anterior, e quando ele perguntar se você quer salvá-lo clique em “NO”.


Agora temos um projeto base, que poderá ser usado sempre que começarmos um projeto novo.

Até a próxima.






Download e instalação do wxPack no Windows


1 – Faça o download da última versão da biblioteca do wxWidgets no seguinte endereço:


2 – Faça a instalação padrão do mesmo.

3 – Ele será salvo em um caminho parecido com este:
C:\SourceCode\Libraries\wxWidgets2.8

4 – Finalizando a instalação vamos criar uma variável do sistema com este caminho:

Clique com o botão direito sobre o ícone “Computador”, selecione “Propriedades”.


Se você estiver no XP a caixa de diálogo com as “Propriedades do Sistema” já se abrirá, no Windows 7 clique em “Configurações avançadas do sistema” na lista à esquerda.


Em “Propriedades do Sistema”, clique em “Variáveis de Ambiente”.


Em “Variáveis do sistema” clique em “Novo...”.


Na janela “Nova Variável de Sistema” preencha da seguinte forma:

Nome da Variável = WXWIN
Valor da variável: "Caminho para o wxWidgets" (no meu caso, C:\SourceCode\Libraries\wxWidgets2.8)


Clique em “OK”, na janela “Variáveis de Ambiente” também em “OK” e Propriedades do Sistema “OK”.

Pronto, o wxWidgets está instalado e pronto para ser configurado no Visual C++ assim como em outras IDE’s como o Code::Blocks.

Até a próxima.