WinMain 関数 (winbase.h)

グラフィカル Windows ベースのアプリケーションのユーザー指定のエントリ ポイント。

WinMain は、アプリケーション エントリ ポイントに使用される従来の名前です。 詳細については、「解説」を参照してください。

構文

int __clrcall WinMain(
  [in]           HINSTANCE hInstance,
  [in, optional] HINSTANCE hPrevInstance,
  [in]           LPSTR     lpCmdLine,
  [in]           int       nShowCmd
);

パラメーター

[in] hInstance

型: HINSTANCE

アプリケーションの現在のインスタンスへのハンドル。

[in, optional] hPrevInstance

型: HINSTANCE

アプリケーションの前のインスタンスへのハンドル。 このパラメーターは常に NULL。 別のインスタンスが既に存在するかどうかを検出する必要がある場合は、CreateMutex 関数を使用して一意の名前付きミューテックスを作成します。 ミューテックスが既に存在する場合でも、CreateMutex は成功しますが、関数は ERROR_ALREADY_EXISTSを返します。 これは、最初にミューテックスが作成されたため、アプリケーションの別のインスタンスが存在することを示します。 ただし、悪意のあるユーザーは、実行する前にこのミューテックスを作成し、アプリケーションが起動しないようにすることができます。 このような状況を回避するには、ランダムに名前付きミューテックスを作成し、承認されたユーザーのみが取得できるように名前を格納します。 または、この目的でファイルを使用することもできます。 アプリケーションをユーザーごとに 1 つのインスタンスに制限するには、ユーザーのプロファイル ディレクトリにロックされたファイルを作成します。

[in] lpCmdLine

型: LPSTR

プログラム名を除く、アプリケーションのコマンド ライン。 コマンド ライン全体を取得するには、GetCommandLine 関数を使用します。

[in] nShowCmd

型: int

ウィンドウの表示方法を制御します。 このパラメーターには、ShowWindow 関数の nCmdShow パラメーターで指定できる任意の値を指定できます。

戻り値

型: int

関数が成功し、WM_QUIT メッセージを受信したときに終了する場合は、そのメッセージの wParam パラメーターに含まれる終了値を返す必要があります。 メッセージ ループに入る前に関数が終了すると、0 が返されます。

備考

WinMain 名前は、多くのプログラミング フレームワークで規則によって使用されます。 プログラミング フレームワークによっては、WinMain 関数の呼び出しの前に、そのフレームワークに固有の追加のアクティビティが続く場合があります。

WinMain は、アプリケーションを初期化し、メイン ウィンドウを表示し、アプリケーションの実行の残りの部分の最上位レベルの制御構造であるメッセージの取得とディスパッチのループを入力する必要があります。 WM_QUIT メッセージを受信したら、メッセージ ループを終了します。 その時点で、WinMain はアプリケーションを終了し、WM_QUIT メッセージの wParam パラメーターで渡された値を返す必要があります。 PostQuitMessage呼び出した結果として WM_QUIT が受信された場合、wParam の値は、PostQuitMessage 関数の nExitCode パラメーターの値です。 詳細については、「メッセージ ループの作成」を参照してください。

ANSI アプリケーションでは、WinMain 関数の lpCmdLine パラメーターを使用して、プログラム名を除くコマンド ライン文字列にアクセスできます。 lpCmdLine は、LPTSTR データ型ではなく、LPSTR データ型を使用します。 これは、WinMain を Unicode プログラムで使用できないことを意味します。 GetCommandLineW 関数を使用して、コマンド ラインを Unicode 文字列として取得できます。 一部のプログラミング フレームワークでは、Unicode コマンド ラインを提供する別のエントリ ポイントが提供される場合があります。 たとえば、Microsoft Visual Studio C++ コンパイラは、Unicode エントリ ポイント wWinMain の名前を使用します。

次のコード例では、WinMain 使用する方法を示します。

#include <windows.h>

int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow)
{
    return MessageBox(NULL, "hello, world", "caption", 0);
}

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winbase.h (Windows.h を含む)

関連項目

概念

CreateMutex の

DispatchMessage

GetCommandLine の

GetMessage の

その他のリソース を する

PostQuitMessage

リファレンス

TranslateMessage を する

Windows の