SDK-MFC 備忘録 |
Windows SDKやMFCに関するメモです。
(記載内容について正しいことを保証するものではありません。MSDN等で確認してください)
ウィンドウアプリでも、起動引数でオプション動作を規定したいことがあります。
その1)winmain()の引数からとる
sdkのプログラムの場合はWinMain()の第3引数からコマンドラインがとれます。
ただ、ここでとれるのは実行ファイル名を含む1行のコマンドラインなので自分で文字列スペース区切りで分割する必要があります。
その2)stdioのグローバル変数からとる
unix互換のため、unixプログラミングでおなじみのargc,argvが用意されています。
argc->__argc
argv->__argv
という風に頭にアンダースコアが2個入った名前でアクセスできます。
マルチバイトの環境ならこのまま使用すればいいのですが、UNICODE環境の場合は使いづらいので、次に紹介する方法が便利です。
その3)CommandLineToArgvW()でコマンドラインを取得する
UNICODEの場合はCommandLineToArgvW()でコマンドラインを取得する方法があります。
{//UNICODEでコマンドラインを取得する例 int i;
int nArgs; LPTSTR *lplpszArgs; lplpszArgs = CommandLineToArgvW(GetCommandLine(), &nArgs); for (i = 1; i < nArgs; i++) { CString s = lplpszArgs[i];//i番目の引数 if(s == _T("-ABC")){ //ここに-ABCの引数の処理 } } LocalFree(lplpszArgs);//処理が終わったら開放しておく }