先編寫如下命令行入口定義,內部的具體設定為什么意思,可以參考wxCmdLineParser類。
1 static const wxCmdLineEntryDesc g_cmdLineDesc [] =
2 {
3 { wxCMD_LINE_SWITCH, wxT("h"), wxT("help"), wxT("displays help on the command line parameters"),
4 wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_HELP },
5 { wxCMD_LINE_SWITCH, wxT("t"), wxT("test"), wxT("test switch"),
6 wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_MANDATORY },
7 { wxCMD_LINE_SWITCH, wxT("s"), wxT("silent"), wxT("disables the GUI") },
8
9 { wxCMD_LINE_NONE }
10 };
11
然后重寫
1 void cmdline_testApp::OnInitCmdLine(wxCmdLineParser& parser){
2 parser.SetDesc( g_cmdLineDesc );
3 parser.SetSwitchChars( wxT("-"));
4 }
然后,在MyApp::OnInit(){}內部調用 wxApp::OnInit(){}
而它,會遞歸調用到wxAppConsole::OnInit(){}來初始化和解析命令行參數(shù)。(wx2.8.7\src\common\appbase.cpp的line 173開始有具體的初始化命令行,解析命令行的實現(xiàn)。
使用如下的代碼可以禁止命令行彈出信息窗口。
bool MyApp::OnInit(){
wxMessageOutput * old_output_log = wxMessageOutput::Set( new wxMessageOutputLog);
if(!wxApp::OnInit()){
//parse error
delete wxMessageOutput::Set( old_output_log );
return false;
}
else{
delete wxMessageOutput::Set( old_output_log );
}
MainFrame * w = new MainFrame( wxT("Hello"));
w.Show();
return true;
測試可以看到?jīng)]有出現(xiàn)“命令行解析錯誤”的信息窗口。