728x90
MFC에서 MDI로 처음 생성하면 CCommandLineInfo 클래스 변수를 ParseCommandLine() 하기 전에
m_nShellCommand 변수가 FileNew로 초기화 되어 있다.
이것은 CCommandLineInfo 클래스를 보면 왜 그런지 알 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | class CCommandLineInfo : public CObject
{
public:
// Sets default values
CCommandLineInfo();
// plain char* version on UNICODE for source-code backwards compatibility
virtual void ParseParam(const TCHAR* pszParam, BOOL bFlag, BOOL bLast);
#ifdef _UNICODE
virtual void ParseParam(const char* pszParam, BOOL bFlag, BOOL bLast);
#endif
BOOL m_bShowSplash;
BOOL m_bRunEmbedded;
BOOL m_bRunAutomated;
BOOL m_bRegisterPerUser;
enum { FileNew, FileOpen, FilePrint, FilePrintTo, FileDDE, FileDDENoShow, AppRegister, AppUnregister, RestartByRestartManager, FileNothing = -1 } m_nShellCommand;
// not valid for FileNew
CString m_strFileName;
// valid only for FilePrintTo
CString m_strPrinterName;
CString m_strDriverName;
CString m_strPortName;
// valid only for RestartByRestartManager
CString m_strRestartIdentifier;
~CCommandLineInfo();
// Implementation
protected:
void ParseParamFlag(const char* pszParam);
void ParseParamNotFlag(const TCHAR* pszParam);
#ifdef _UNICODE
void ParseParamNotFlag(const char* pszParam);
#endif
void ParseLast(BOOL bLast);
}; |
위에서 m_nShellCommand의 enum을 보면, m_nShellCommand 변수의 0 값이 FileNew이다.
그 때문에 별도의 값을 처리하지 않으면 FileNew로 기본 초기화 되는 것이다.
때문에 App::InitInstance() 에서 다음과 같이 m_nShellCommand 변수의 값을 FileNotthing;으로 변경해주면 된다.
1 2 3 4 5 6 7 8 9 | // 표준 셸 명령, DDE, 파일 열기에 대한 명령줄을 구문 분석합니다. CCommandLineInfo cmdInfo; // 프로그램 시작 시 빈창을 띄우지 않는다. cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;
ParseCommandLine(cmdInfo); |
728x90
'GUI Toolkit > MFC' 카테고리의 다른 글
MFC - 다양한 예제들 (0) | 2018.09.10 |
---|---|
MFC - MFC에서 Thread 종료시 주의할 점 (0) | 2017.11.30 |
MFC - CImage Memory Leak (0) | 2017.11.17 |
MFC - 타이틀바(Titlebar) 와 테두리(Border) 에 이미지 넣기 (2) | 2017.09.28 |
MFC - 버튼 연속 클릭 시 인식이 안되는 문제 (0) | 2017.09.25 |