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.



0 comentários:
Postar um comentário