w2mfcext
WcCommandLineInfo

コマンドライン引数の取得・解析を行います
ソース CommandLineInfo.hpp
CommandLineInfo.cpp
1 WcCommandLineInfo派生クラス
WcDerivedCommandLineInfoを宣言します。
WcDerivedCommandLineInfo : public WcCommandLineInfo
{
  public:
    WcDerivedCommandLineInfo();
    virtual ~WcDerivedCommandLineInfo();
  protected:
    static LPCTSTR m_aFlag[];
};
2 WcDerivedCommandLineInfo::m_aFlagを初期化します。
値としてコマンドラインオプション文字列を設定します。
LPCTSTR WcDerivedCommandLineInfo::m_aFlag[] = {
  "foo"  ,
  "bar"  ,
  "help" ,
};
3 コンストラクタを実装します。
派生元クラスにはフラグの配列と要素数を与えます。
WcDerivedCommandLineInfo::WcDerivedCommandLineInfo()
  : WcCommandLineInfo( m_aFlag , sizeof(m_aFlag) / sizeof(*m_aFlag) )
{
}
実装例 WaveRepairCLI.hpp
WaveRepairCLI.cpp
4 CWinApp派生クラスWcDerivedWinApp
WcDerivedCommandLineInfo型変数m_cliを宣言します。
class WcDerivedWinApp : public CWinApp
{
...
private:
  WcDerivedCommandLineInfo m_cli;
public:
  const WcDerivedCommandLineInfo & GetCLI() const { return m_cli; }
...
};
5 WcDerivedWinApp::InitInstanceでコマンドラインを解析します。
BOOL WcDerivedWinApp::InitInstance()
{
  ...
  ParseCommandLine( m_cli ); // コマンドライン解析
  ...
}
6 これ以降は、
任意のタイミングでオプションの有無、パラメタの値を調べることが可能です。
// helpオプションが設定されていればそのパラメタを表示します
if( m_cli.GetCommandLineParam( 2 ).m_Found ) {
   ::AfxMessageBox( m_cli.GetCommandLineParam( 2 ).m_pParam );
}

back mail
This page is written in Japanese