プラットフォーム SDK
WinMain
WinMain 関数は、Win32 アプリケーションの初期エントリポイントです。Windows システムが呼び出します。
int WINAPI WinMain(
HINSTANCE hInstance, // 現在のインスタンスのハンドル
HINSTANCE hPrevInstance, // 以前のインスタンスのハンドル
LPSTR lpCmdLine, // コマンドライン
int nCmdShow // 表示状態
);
パラメータ
- hInstance
- アプリケーションの現在のインスタンスのハンドルが入ります。
- hPrevInstance
- アプリケーションの前のインスタンスのハンドルが入ります。Win32 アプリケーションでは、常に NULL です。
すでに他のインスタンスが存在するかどうかを調べるには、 関数を使って一意の名前の付いたミューテックスを作成してください。CreateMutex 関数は、すでのそのミューテックスが存在していても成功しますが、 関数を呼び出すと ERROR_ALREADY_EXISTS が返ります。GetLastError 関数からこの値が返された場合、既に同じアプリケーションの他のインスタンスが存在しており、それが最初のミューテックスを作成しています。
- lpCmdLine
- アプリケーションのコマンドラインが格納された NULL で終わる文字列へのポインタが入ります。プログラム名は含まれません。コマンドライン全体を取り出すには、 関数を使ってください。
- nCmdShow
- ウィンドウの表示状態の指定が入ります。次のいずれかの値が渡されます。
| 値 | 意味 |
| SW_HIDE | ウィンドウを非表示にし、他のウィンドウをアクティブにします。 |
| SW_MAXIMIZE | ウィンドウを最大化します。 |
| SW_MINIMIZE | ウィンドウを最小化し、Z オーダーで次のトップレベルウィンドウをアクティブにします。 |
| SW_RESTORE | ウィンドウをアクティブにして表示します。最小化または最大化されていたウィンドウは、元の位置とサイズに戻ります。最小化されているウィンドウを元に戻す場合は、このフラグをセットします。 |
| SW_SHOW | ウィンドウをアクティブにして、現在の位置とサイズで表示します。 |
| SW_SHOWMAXIMIZED | ウィンドウをアクティブにし、最大化して表示します。 |
| SW_SHOWMINIMIZED | ウィンドウをアクティブにし、最小化して表示します。 |
| SW_SHOWMINNOACTIVE | ウィンドウを最小化して表示します。
SW_SHOWMINIMIZED と似ていますが、この値を指定した場合は、ウィンドウはアクティブ化されません。 |
| SW_SHOWNA | ウィンドウを現在の位置とサイズで表示します。
SW_SHOW と似ていますが、この値を指定した場合は、ウィンドウはアクティブ化されません。 |
| SW_SHOWNOACTIVATE | ウィンドウを直前の位置とサイズで表示します。
SW_SHOWNORMAL と似ていますが、この値を指定した場合は、ウィンドウはアクティブ化されません。 |
| SW_SHOWNORMAL | ウィンドウをアクティブにして表示します。ウィンドウが最小化または最大化されていた場合は、その位置とサイズを元に戻します。初めてウィンドウを表示するときには、このフラグを指定します。 |
戻り値
関数が WM_QUIT メッセージを受け取って正常に終了する場合は、メッセージの wParam パラメータに格納されている終了コードを返してください。関数がメッセージループに入る前に終了する場合は、0 を返してください。
解説
WinMain 関数では、アプリケーションの初期化とメインウィンドウの表示を行ったうえで、アプリケーション実行のその他の部分のためのトップレベルの制御構造であるメッセージ取得/ディスパッチループに入ってください。WM_QUIT メッセージを受け取ったときに、メッセージループを終了させます。この時点で、WinMain 関数はアプリケーションを終了させ、WM_QUIT メッセージの wParam パラメータで受け取った値を返さなければなりません。PostQuitMessage 関数を呼び出した結果として WM_QUIT メッセージを受け取った場合は、wParam パラメータの値は、PostQuitMessage 関数の nExitCode パラメータの値となります。詳細については、「」を参照してください。
ANSI アプリケーションは、WinMain 関数の lpCmdLine パラメータによりコマンドライン文字列にアクセスすることができます。ただし、この文字列にはプログラム名は含まれません。WinMain 関数が Unicode 文字列を返せないのは、lpCmdLine パラメータがデータ型として LPTSTR ではなく LPSTR を使っているためです。 関数は LPTSTR 型を使っているため、これを使えば Unicode のコマンドライン文字列にもアクセスできます。
対応情報
Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダー:Winbase.h で宣言、Windows.h をインクルード
参照
DispatchMessage, , GetMessage, PostQuitMessage, TranslateMessage