コマンドラインパラメータが渡される小さなダイアログベースのアプリケーションが欲しいので、VC++ 6を使用して、アプリケーションウィザードを実行し、MFCダイアログアプリケーションを選択しました。
これには、コマンドラインパラメータが自動的に装備されていません。それで、MSDNに行って、これらのメモリを更新しました。 MSDNでは、すべてのC++プログラムにmain()またはwmain()関数のいずれかがあり、argcなどの引数がここに入ると述べています。先ほど作成したアプリケーションにはこれらがありません。
アプリケーションへのエントリポイントである関数が明らかにあるので、ここで引数を貼り付けることはできますか?私はこれを試しましたが、実際に正しい関数を編集していたとは思いません。 (プロジェクトの設定などからmain()関数として機能している関数を見つけることはできますか?)
基本的に、プログラムでコマンドラインパラメータを読み取るにはどうすればよいですか。
副業としても。単純なプログラムの場合、これをMFCアプリケーションにしたくないので、MBを超えるサイズになります。非MFCダイアログアプリケーションを作成できるアプリケーションウィザードテンプレートライブラリはありますか?
GetCommandLine()を使用すると、実行されているファイルの名前が返され、その後に引数が続きます。
アプリケーションメンバーm_lpCmdLine(yourApp.m_lpCmdLine
のように使用)には、引数のみが含まれます。
また、便利な CWinApp :: ParseCommandLine() もあります。
また、ATL COMウィザードを使用して、MFC以外のダイアログアプリケーションを作成します(.dllではなく.exeオプションを選択します)。
はい、 CWinApp:ParseCommandLine を参照してください。 CCommandLineInfo クラスも確認してください。
MFCアプリケーションでは、エントリポイント関数は、main()
またはwmain()
のような「initInstance()」です。 initInstance()
でCWinApp::m_lpCmdLine
を使用して、コマンドラインにアクセスします。
生のコマンドラインを取得するには、次のコードを使用します(すべてのWin32/MFCアプリケーションで機能します)。
TCHAR *pCommandLine = ::[GetCommandLine()][1];
int nArgc = 0;
LPWSTR *pArgv = ::CommandLineToArgvW(pCommandLine, &nArgc);
引数が指定されていない場合、nArgcは1であり、存在する場合は1より大きくなければなりません。次に、pArgv 1 が最初の引数になります。