Morya

wxWidgets处理命令行

  先编写如下命令行入口定义,内部的具体设定为什么意思,可以参考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(){}来初始化和解析命令行参数。(wx2.8.7\src\common\appbase.cpp的line 173开始有具体的初始化命令行,解析命令行的实现。

使用如下的代码可以禁止命令行弹出信息窗口。


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;

测试可以看到没有出现“命令行解析错误”的信息窗口。

posted on 2008-11-21 23:38 Morya 阅读(783) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2008年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

统计

常用链接

留言簿(1)

随笔档案(21)

文章档案(1)

最新评论

评论排行榜