• ベストアンサー

MFCアプリのコマンドラインでパラメータを使用した起動方法

VisualC++6.0を用いて、ダイアログの2つあるプログラムを 作ったのですが、 2つのダイアログを例えばAさん用、Bさん用として使い分けようと思ったときに メニューでダイアログをそれぞれ指定して、実行しようと思ったのですが、 Aさん用を親ダイアログにしてしまうと、Bさんは起動時ごとにメニューで 切り替えなければいけなくなりますよね。 それで、切り替えをしなくても良いようにと思って、 コマンドラインからパラメータで「/A」「/B」などとしたときに、Aさん用 Bさん用として、起動させたいのですが、 コマンドラインのパラメータをどこで受け取って処理しているのか 分らないのですが、教えては頂けないでしょうか? よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

補足です。 WinAPPクラスInitInstance関数のなかで、 >CCommandLineInfo cmdInfo; >ParseCommandLine(cmdInfo); の記述があればそのあとでパラメータの解析を行います。>>m_lpCmdLineです。 もし、作成中のプロジェクトにこの記述がない (InitInstance関数がない等の)場合は、 CCommandLineInfoクラスの継承クラスをつくって 仮想関数 virtual void CCommandLineInfo::ParseParam(LPCTSTR lpszParam, BOOL bFlag, BOOL bLast) を実装しましょう。 たとえば・・・ CWinApp theApp; using namespace std; // コマンドライン解析クラス class CMyClass : public CCommandLineInfo{ public: virtual void ParseParam(LPCTSTR, BOOL, BOOL); }; //コマンドラインの個々のパラメータを解析および解釈するために、フレームワークが呼び出します void CMyClass::ParseParam( LPCTSTR lpszParam, BOOL bFlag, BOOL bLast ) { CString strTemp = _T(lpszParam); // パラメータ、またはフラグ return; } void main() { CMyClass info; theApp.ParseCommandLine(info); } では^^。

その他の回答 (2)

  • jun_l
  • ベストアンサー率18% (4/22)
回答No.3

((CMyApp*)AfxGetApp())->m_lpCmdLine; を使ってはいけないのでしょうか?

  • alfeim
  • ベストアンサー率58% (114/195)
回答No.1

CWinAppクラスのメンバであるLPTSTR m_lpCmdLineがコマンドライン引数ですので CHogehogeAppクラス(Hogehogeはプロジェクト名と同じ)のm_lpCmdLineメンバにアクセスすればコマンドライン引数を取得する事が出来ると思います