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 パラメーターで渡された値を返す必要があります。 WM_QUIT PostQuitMessage を呼び出した結果として受信された場合、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 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winbase.h (Windows.h を含む)

関連項目

概念

CreateMutex

DispatchMessage

GetCommandLine

GetMessage

その他のリソース

PostQuitMessage

リファレンス

TranslateMessage

Windows