質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Win32 API

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

Q&A

解決済

2回答

4130閲覧

Win32APIでWinMain関数の引数を直接参照せずに使う方法が知りたい!

aridai1221

総合スコア45

Win32 API

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

0グッド

0クリップ

投稿2016/06/26 07:25

編集2016/06/28 22:43

Win32APIのエントリポイントは

C++

1int WINAPI WinMain( 2 HINSTANCE hInstance, 3 HINSTANCE hPrevInstance, 4 LPSTR lpCmdLine, 5 int nCmdShow) 6```ですが、 7```C++ 8int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) 9```のようにWinMain関数の仮引数を省略した書き方をしたときに 10仮引数の値を扱いたいということがあるので**__nCmdShow__** を直接参照することなく扱う方法を教えて下さい。 11 12**__hInstance__****__GetModuleHandle(NULL)__** を使うことによって取得できたかと思うのですが、 13**__nCmdShow__** の場合はどうすればいいのでしょうか。 14 15追記 16打ち間違えていました。 17nCmdLine ではなくて nCmdShow でした。 18

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

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

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

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

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

guest

回答2

0

Windows APIのGetCommandLine以外にも、VC++には____argc、____argv、__wargv」というグローバル変数が定義されていて、main関数と同じ形式で引数が参照できるので、それを使うという手もあります。

投稿2016/06/26 11:09

編集2016/06/26 11:09
catsforepaw

総合スコア5938

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

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

catsforepaw

2016/06/26 11:47

> nCmdLine ではなくて nCmdShow でした。 ……。 すでにraccyさんが回答されている通りです。
aridai1221

2016/06/27 03:53

catsforepawさんの回答も参考になりました。 ありがとうございました。
guest

0

ベストアンサー

GetCommandLineまたはCommandLineToArgvWを使えば、取得できたと思います。


nCmdLine ではなくて nCmdShow でした。

なぬーーー>< ということで、追加で調べました。

GetWindowPlacementで取得できるWINDOWPLACEMENT構造体のshowCmdから取得できるようです。試して見てください。

参考: c++ - how to find a window's SW_SHOW/SW_HIDE status - Stack Overflow

投稿2016/06/26 07:49

編集2016/06/26 11:29
raccy

総合スコア21735

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

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

aridai1221

2016/06/26 11:52

できました。 ありがとうございます!! :)
catsforepaw

2016/06/26 12:19

ちょっと動揺してあまりよく考えていなかったのですが、GetWindowPlacement関数だと「現在のウィンドウの状態」であって、WinMainの引数と同じとは限りませんね。 GetStartupInfo関数を使う方が良いかもしれません。STARTUPINFO構造体のwShowWindowがnCmdShowに相当します。
raccy

2016/06/26 12:27

たしかに現在の状態であって、起動した時の状態じゃないですね。WinMain直後に取得するか、catsforepawさんが言うようにGetStartupInfo関数から取るしかなさそうです。
aridai1221

2016/06/27 03:54

なるほど、分かりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問