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