- ベストアンサー
WINAPIから始まるプログラム実行時の引数について。
WINAPIで始まるメインループにコンソールプログラムのように、引数を与えて実行時の処理を変更させる方法を教えてください。 コンソールでの引数の使い方等は分かるので、どうやったらWINAPIにそう言った引数が渡せるのかが知りたいデス_| ̄|○
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
コンパイラを選ぶかもしれませんが、グローバル変数 _argc, _argv が、コンソールアプリの場合の main 関数の引数 argc と argv と同じように使えます。 プログラム起動時の引数の与え方は、コンソールアプリと同じです。ショートカットを作成して引数を与える方法もあります。 WINAPIは__stdcallのことなので、ウィンドウズアプリケーション/コンソールアプリケーション と使い分けるのがわかりやすいです。
その他の回答 (3)
- furyfox
- ベストアンサー率56% (58/103)
>文字列を画面に表示すると言ったサンプルソースを載せ >て頂けると大変助かります。 なにがわからないのでしょうか・・・ int WINAPI WinMain( HINSTANCE hInstance ,HINSTANCE hPrevInstance ,LPSTR lpCmdLine ,int nCmdShow ){ MessageBox(NULL,lpCmdLine ,lpCmdLine ,MB_OK); return 0; } これでメッセージボックスがでます。 #1さんのURLにでているコードが一番簡単なmainループです。 そのコードの case WM_DESTROY:の上に case WM_PAINT: { HDC hdc = GetDC(hWnd); TextOut(hdc , 0 , 0 , "hello world", lstrlen("hello world")); ReleaseDC(hWnd, hdc); } break; とでもいれればhello worldとウインドウに表示されます。
お礼
試した所、ちゃんと引数が得られました。 解らなかった所としては、LPSTRが構造体だったと言う所と、lpCmdLineが何をどんな形を持っているかとかでした。 この回答を見て、解決いたしました。 お手数掛けました。_| ̄|○
- RAPTsong
- ベストアンサー率42% (74/175)
GetCommandLine 現在のプロセスのコマンドライン文字列へのポインタを取得します。 LPTSTR GetCommandLine(VOID) プログラム名も欲しければ、GetCommandLine()で取得。 WinMainの第3引数はプログラム名を含みません。 GetCommandLine()は関数なので、WinMain関数外でも 使用できます。 LPTSTR は、Unicode環境でコンパイルした場合、wchar_t* 型、それ以外の場合、char* 型です。
お礼
試してみた結果、ちゃんと値が得られました。 まさか、こんな簡単な事で得られるとは……脱帽しました。 Borland C++のコンパイラなので、Unicode環境かどうかが不明でしたが、char*での習得が出来たので、結果オーライでしたw
- sha-girl
- ベストアンサー率52% (430/816)
WINAPIで始まるメインループとは http://www.doumo.jp/postgretips/tips.jsp?tips=13 とかの事をいっているのですか? int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) のLPSTR lpCmdLineに引数がはいっています。 LPSTRとは文字列(char*)のことです。
補足
回答有難う御座います。 問題となっているWINAPIから始まるメインループとは、 int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , LPSTR lpCmdLine , int nCmdShow ) の事を指します。 アプリケーション作製で、上記のメインループは『決り文句』と言う感覚で使っていたのですが、やはりどう言う動きをしているのか凄く気になったので質問しましたw えと、今までのコンソールプログラムのように、簡単に扱え無かったので、引数から取った文字列を画面に表示すると言ったサンプルソースを載せて頂けると大変助かります。_| ̄|○
お礼
えと、試してビックリしました。 まさか、こんなに簡単に解決出来ちゃうとは、思ってもいませんでした。((;゜Д゜) > WINAPIは__stdcallのことなので、ウィンドウズアプリケーション/コンソールアプリケーション と使い分けるのがわかりやすいです。 えと、コレの意味が分かり辛いので、補足していただけると助かります。