2014년 10월 29일 수요일

mfc GUI 프로그램에서 Command line(커맨드 라인) 사용하기

MFC로 프로젝트를 생성하면, CWinApp를 상속받은 클래스가 생긴다. 보통 파일명이 프로젝트명.cpp 이렇게 되어있다.



이 부분의 InitInstance 메소드를 보면 커맨드라인을 파싱하는 부분이 있는데, 이걸 그대로 쓰면 안된다.



기존코드

CCommandLineInfo cmdInfo;

ParseCommandLine(cmdInfo);



if (!ProcessShellCommand(cmdInfo))

return FALSE;



MFC는 기본적으로 명령인자를 전달받으면 FileOpen으로 프로그램을 시작하게 된다. 이대로 실행해보면 알겠지만, 파일을 찾을 수 없다고 나오면서 되지 않는다. 명령인자로 받은 문자열을 파일로 찾으려고 보니 생기는 문제이다.(SDI 또는 MDI 프로젝트)



다음과 같이 코드를 수정해주면 원하는 방향으로 처리할 수 있다.

CCommandLineInfo cmdInfo;

ParseCommandLine(cmdInfo);



if( __argc > 1 )

{

for( int i = 0; i < __argc; i++ )

OutputDebugString( __targv[ i ] );



//FileOpen이 아닌 그냥 새창이 뜨도록 변경.

cmdInfo.m_strFileName = "";

cmdInfo.m_nShellCommand = CCommandLineInfo::FileNew;

}



if (!ProcessShellCommand(cmdInfo))

return FALSE;

단 _targv의 첫 번째 명령인자는 현재 파일의 경로이다. 당연하겠지만.

댓글 없음: