Last Updated 2005/07/08
Visual C++ MFC 他のコントロール
コマンドライン引数
2005/07/08

コマンドライン引数を処理するには,CWinApp::m_lpCmdLine か __argc, __argv を使用する.

__argc と __argv は以下の様に定義されていてそのまま使用することが可能である.
  extern int    __argc;
  extern char** __argv;

setargv.obj を一緒にリンクしておけばワイルドカード展開もやってくれる.


また,API の GetCommandLine() を使用するか MFC の CCommandLineInfo クラスも使用できる.
MFC の CCommandLineInfo は派生させて使用しなければならない.
そのままで /P や OLE 関連のシステム予約コマンドラインオプションを処理するようになっているからである.
派生させて使用するには以下のようにする.

class CMyCommandLineInfo : public CCommandLineInfo
{
public:
    CMyCommandLineInfo();
    void ParseParam(const TCHAR* pszParam, BOOL bFlag, BOOL bLast);
    BOOL m_bOptionJ;
    BOOL m_bOptionPT;
};

CMyCommandLineInfo::CMyCommandLineInfo()
{
    m_bOptionJ = FALSE;
    m_bOptionPT = FALSE;
}

void CMyCommandLineInfo::ParseParam(const TCHAR* pszParam, BOOL bFlag, BOOL bLast)
{
    CCommandLineInfo::ParseParam(pszParam, bFlag, bLast);
    if( bFlag ) {
        CString strOption = pszParam;
        if( strOption == _T("J") ) {
            m_bOptionJ = TRUE;
        } else if( strOption == _T("PT") ) {
            m_bOptionPT = TRUE;
        }
    }
}

上記をインプリメントした上で,InitInstance() にて

    CMyCommandLineInfo cmdInfo;
    ParseCommandLine(cmdInfo);

とする.


参照
実行ファイルのパス
前後のTips
コマンドライン引数

DSS ProgrammingTipsCGI Ver1.02