Command-Line Arguments
From WxWiki
[edit] Pitfalls
Given the below example, don't use parser.SetCmdLine(argc, argv);. This will set the parser to use a different command line parameters than what is passed to the program.
[edit] File Examples
main.h (Header File)
#include <wx/wxprec.h> #include <wx/cmdline.h> #ifndef WX_PRECOMP #include <wx/wx.h> #endif class MyApp: public wxApp { public: // from wxApp virtual bool OnInit(); virtual int OnExit(); virtual int OnRun(); virtual void OnInitCmdLine(wxCmdLineParser& parser); virtual bool OnCmdLineParsed(wxCmdLineParser& parser); private: bool silent_mode; }; static const wxCmdLineEntryDesc g_cmdLineDesc [] = { { wxCMD_LINE_SWITCH, wxT("h"), wxT("help"), wxT("displays help on the command line parameters"), wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_HELP }, { wxCMD_LINE_SWITCH, wxT("t"), wxT("test"), wxT("test switch"), wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_SWITCH, wxT("s"), wxT("silent"), wxT("disables the GUI") }, { wxCMD_LINE_NONE } }; DECLARE_APP(MyApp)
main.cpp (Implementation File)
#include "main.h" IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { // call default behaviour (mandatory) if (!wxApp::OnInit()) return false; // some application-dependent treatments... // Show the frame wxFrame *frame = new wxFrame((wxFrame*) NULL, -1, _T("Hello wxWidgets World")); frame->CreateStatusBar(); frame->SetStatusText(_T("Hello World")); frame->Show(TRUE); SetTopWindow(frame); return true; } int MyApp::OnExit() { // clean up return 0; } int MyApp::OnRun() { int exitcode = wxApp::OnRun(); //wxTheClipboard->Flush(); if (exitcode!=0) return exitcode; } void MyApp::OnInitCmdLine(wxCmdLineParser& parser) { parser.SetDesc (g_cmdLineDesc); // must refuse '/' as parameter starter or cannot use "/path" style paths parser.SetSwitchChars (wxT("-")); } bool MyApp::OnCmdLineParsed(wxCmdLineParser& parser) { silent_mode = parser.Found(wxT("s")); // to get at your unnamed parameters use wxArrayString files; for (int i = 0; i < parser.GetParamCount(); i++) { files.Add(parser.GetParam(i)); } // and other command line parameters // then do what you need with them. return true; }
You may also need to look for wxApp::CleanUp() and wxApp::ProcessIdle().
