🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

1493閲覧

Win API のlpCmdLine 引数の使い方が知りたい。

退会済みユーザー

退会済みユーザー

総合スコア0

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2021/03/07 05:17

提示コードのコメント内部のコードですがドラックアンドドロップでファイルをドラックしたときはファイルのパス文字列が来るのでnullじゃないときそれで逆のときファイルをドラックしていないときはnullが返ってくるというのを利用してプログラムを組みたいのですがどうすればいいのでしょか?ファイルをドラックアンドドロップしていないときもnullではない値が帰ってきます。

cpp

1 2int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 3{ 4 5 AllocConsole(); 6 FILE* fp; 7 freopen_s(&fp, "CONOUT$", "w", stdout); 8 freopen_s(&fp, "CONIN$", "r", stdin); 9 10 ChangeWindowMode(TRUE);// ウインドウモードで起動 11 SetGraphMode(SCREEN_WIDTH, SCREEN_HEIGHT, 32);// 画面サイズ 12 13///////////////////////////////////////////////////////////////////////// 14 if (lpCmdLine == NULL) { 15 printf("lpCmdLine null\n"); 16 } 17 else { 18 printf("D&D %c\n", lpCmdLine[0]); 19 } 20//////////////////////////////////////////////////////////////////////// 21 22 23 // DXライブラリ初期化処理 24 if (DxLib_Init() == -1) 25 { 26 return -1; 27 } 28 29 30 31 std::shared_ptr<Entry> scene = std::make_shared<Entry>(lpCmdLine); //シーンクラス 32 std::shared_ptr<Fps> fps = std::make_shared<Fps>(); //フレームレート 33 std::shared_ptr<Input> input = std::make_shared<Input>(); //キー入力 34 35 36 37 38 while (true) 39 { 40 fps->Update(); //FPS更新 41 SetDrawScreen(DX_SCREEN_BACK); //バックバッファーに描画先を指定 42 input->Update(); //キー入力を更新 43 44 45 46 47 48 scene->Update(); //計算 49 scene->Draw(); //描画 50 51 52 53 //ESCキーで終了 54 if (input->getKeyDown(KEY_INPUT_ESCAPE) == true) 55 { 56 break; 57 } 58 59 60 ScreenFlip(); //スワップバッファ 61 ClearDrawScreen(); //画面をクリア 62 ProcessMessage(); //メッセージ処理 63 fps->Wait(); //FPS待機 64 65 } 66 67 DxLib_End(); // DXライブラリ使用の終了処理 68 return 0; // ソフトの終了 69}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ファイルをドラックしていないときはnullが返ってくるというのを利用して

それは一体どこ情報でしょうか。
引数指定がない場合に渡されるのはNULLではなく空文字列です。

WinMain function
lpCmdLine
Type: LPSTR
The command line for the application, excluding the program name. To retrieve the entire command line, use the GetCommandLine function.

投稿2021/03/07 07:20

SHOMI

総合スコア4079

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/03/07 07:23

質問ですがGetCommand();関数を利用すると "C:\Users\yw325\Desktop\Test\x64\Release\Level_Editor.exe" C:\Users\yw325\Desktop\Test\x64\Release\Log.txtという文字列が返ってきて自分が欲しいのは C:\Users\yw325\Desktop\Test\x64\Release\Log.txt という文字列なのですがこれは自分で分解するしかないのでしょうか?
SHOMI

2021/03/07 07:47 編集

それからプログラム名("C:\Users\yw325\Desktop\Test\x64\Release\Level_Editor.exe")を取り除いたのがlpCmdLineだと説明に書いてあるのですが… もちろん自分で分解しても良いですが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問