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의 첫 번째 명령인자는 현재 파일의 경로이다. 당연하겠지만.
댓글 없음:
댓글 쓰기