1. MyApp 클래스(wxApp 를 public 상속한 클래스)에서 다음 메소드를 오버라이드 한다.
virtual void OnInitCmdLine(wxCmdLineParser& parser);
virtual bool OnCmdLineParsed(wxCmdLineParser& parser);
2. command line 설정
const wxCmdLineEntryDesc cmd_desc[] =
{
{ wxCMD_LINE_OPTION, "c", "config", "configuration url", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL|wxCMD_LINE_PARAM_MULTIPLE },
wxCMD_LINE_DESC_END
};
/c나 --config 을 키로 들어온 string 값을 의미하고
wxCMD_LINE_PARAM_OPTIONAL 는 있어도 되고 없어도 되고를 의미
/c나 --config 을 키로 들어온 string 값을 의미하고
wxCMD_LINE_PARAM_OPTIONAL 는 있어도 되고 없어도 되고를 의미
wxCMD_LINE_PARAM_MULTIPLE 는 --config 이 여러번 들어올 수 있으며 마지막 값을 가져오겠음을 의미
wxCMD_LINE_DESC_END 는 wxCmdLineEntryDesc 정의가 끝났음을 의미
wxCMD_LINE_DESC_END 는 wxCmdLineEntryDesc 정의가 끝났음을 의미
3. 받아들일 커맨드 라인 키 설정
void
MyApp ::OnInitCmdLine(wxCmdLineParser& parser)
{
wxApp::OnInitCmdLine(parser);
// command 명령 지정
parser.SetDesc(cmd_desc);
// 프로그램 설명 추가
parser.AddUsageText("안녕하세요. MyApp command line 입니다.");
//wxMessageBox(parser.GetUsageString()); // 설명 확인
}
4. 커맨드 라인 파싱된 값 획득
bool MyApp::OnCmdLineParsed(wxCmdLineParser& parser)
{
if ( !wxApp::OnCmdLineParsed(parser) )
return false;
// get command line
wxString config;
parser.Found("config", &config);
if (!config.IsEmpty()) {
wxMessageBox(config);
}
return true;
}
wxApp::OnInit() 실행후 OnInitCmdLine(), OnCmdLineParsed()가 실행된다.
그래서 OnInit()에서 미리 커맨드 인자값을 알려면 wxApp::argc, wxApp::argv 를
가져다 써야 하는데 좀 이상하지 않나..?
어쨋든 wxApp 에서 기본적으로 등록안된 인자값이 오면 "Unknown Option" 메시지창을 띄워주므로
wxWidget의 기능을 안쓰고 직저접 OnInit() 에서 wxApp::argc , argv 로 사용하려면
OnInitCmdLine() 재정의 하여 parser.SetCmdLine("") 를 넣어주면 된다.
void MyApp::OnInitCmdLine(wxCmdLineParser& parser)
{
parser.SetCmdLine("");
}
혹은 OnInit() 에서 다음 코드를 주석처리
//if ( !wxApp::OnInit() )
// return false;
'C++' 카테고리의 다른 글
#pragma message 를 활용한 할일 적어두기 (0) | 2012.03.07 |
---|---|
메모리 릭 확인 - Detected memory leaks (0) | 2012.02.27 |
오픈소스 라이센스 : libcurl, openSSL, wxWidgets (0) | 2012.02.26 |
Mutex로 중복실행 방지 (0) | 2012.02.24 |
[libcurl] curl_multi_perform 사용시 -1 (select error) (0) | 2012.02.13 |
InstallShield 로 작성되어 설치된 프로그램 버전 정보 (0) | 2012.02.01 |
libcurl + openssl (visual studio 2010, static library) (0) | 2012.01.27 |
현재 프로그램이 사용중인 메모리 사용량 (0) | 2012.01.02 |