Freigeben über


WinMain-Funktion (winbase.h)

Der vom Benutzer bereitgestellte Einstiegspunkt für eine grafische Windows-basierte Anwendung.

WinMain- ist der herkömmliche Name, der für den Einstiegspunkt der Anwendung verwendet wird. Weitere Informationen finden Sie in den Hinweisen.

Syntax

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

Parameter

[in] hInstance

Typ: HINSTANCE-

Ein Handle zur aktuellen Instanz der Anwendung.

[in, optional] hPrevInstance

Typ: HINSTANCE-

Ein Handle für die vorherige Instanz der Anwendung. Dieser Parameter ist immer NULL-. Wenn Sie ermitteln müssen, ob bereits eine andere Instanz vorhanden ist, erstellen Sie einen eindeutig benannten Mutex mithilfe der CreateMutex--Funktion. CreateMutex wird auch dann erfolgreich ausgeführt, wenn der Mutex bereits vorhanden ist, aber die Funktion gibt ERROR_ALREADY_EXISTSzurück. Dies weist darauf hin, dass eine andere Instanz Ihrer Anwendung vorhanden ist, da sie zuerst den Mutex erstellt hat. Ein böswilliger Benutzer kann diesen Mutex jedoch erstellen, bevor Sie die Anwendung starten und verhindern. Um diese Situation zu verhindern, erstellen Sie einen zufällig benannten Mutex, und speichern Sie den Namen so, dass er nur von einem autorisierten Benutzer abgerufen werden kann. Alternativ können Sie eine Datei für diesen Zweck verwenden. Um Ihre Anwendung auf eine Instanz pro Benutzer zu beschränken, erstellen Sie eine gesperrte Datei im Profilverzeichnis des Benutzers.

[in] lpCmdLine

Typ: LPSTR-

Die Befehlszeile für die Anwendung, mit Ausnahme des Programmnamens. Um die gesamte Befehlszeile abzurufen, verwenden Sie die GetCommandLine--Funktion.

[in] nShowCmd

Typ: int

Steuert, wie das Fenster angezeigt werden soll. Dieser Parameter kann ein beliebiger Wert sein, der im nCmdShow Parameter für die ShowWindow--Funktion angegeben werden kann.

Rückgabewert

Typ: int

Wenn die Funktion erfolgreich ist, sollte das Beenden, wenn sie eine WM_QUIT Nachricht empfängt, den Ausgangswert zurückgeben, der im wParam--Parameter dieser Nachricht enthalten ist. Wenn die Funktion vor der Eingabe der Nachrichtenschleife beendet wird, sollte sie Null zurückgeben.

Bemerkungen

Der Name WinMain- wird von vielen Programmierframeworks verwendet. Je nach Programmierframework kann dem Aufruf der WinMain--Funktion vorangestellt werden, gefolgt von zusätzlichen Aktivitäten, die für dieses Framework spezifisch sind.

Ihre WinMain- sollte die Anwendung initialisieren, das Hauptfenster anzeigen und eine Nachrichtenabruf-und-Verteilerschleife eingeben, die die Struktur der obersten Ebene für die ausführung der Anwendung darstellt. Beenden Sie die Nachrichtenschleife, wenn sie eine WM_QUIT Nachricht empfängt. Zu diesem Zeitpunkt sollte ihre WinMain- die Anwendung beenden und den wert zurückgeben, der im WM_QUITwParam--Parameter der Nachricht übergeben wird. Wenn WM_QUIT als Ergebnis des Aufrufs PostQuitMessage-empfangen wurde, ist der Wert wParam- der Wert des PostQuitMessage-nExitCode--Parameters der Funktion. Weitere Informationen finden Sie unter Erstellen einer Nachrichtenschleife.

ANSI-Anwendungen können den lpCmdLine- Parameter der WinMain--Funktion verwenden, um auf die Befehlszeilenzeichenfolge zuzugreifen, mit Ausnahme des Programmnamens. Beachten Sie, dass lpCmdLine- den LPSTR Datentyp anstelle des LPTSTR Datentyp verwendet. Dies bedeutet, dass WinMain- nicht von Unicode-Programmen verwendet werden kann. Die GetCommandLineW--Funktion kann verwendet werden, um die Befehlszeile als Unicode-Zeichenfolge abzurufen. Einige Programmierframeworks stellen möglicherweise einen alternativen Einstiegspunkt bereit, der eine Unicode-Befehlszeile bereitstellt. Beispielsweise verwendet der Microsoft Visual Studio C++-Konformer den Namen wWinMain- für den Unicode-Einstiegspunkt.

Beispiel

Das folgende Codebeispiel veranschaulicht die Verwendung von WinMain-

#include <windows.h>

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

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 2000 Professional [nur Desktop-Apps]
mindestens unterstützte Server- Windows 2000 Server [nur Desktop-Apps]
Zielplattform- Fenster
Header- winbase.h (enthalten Windows.h)

Siehe auch

Konzeptionelle

CreateMutex-

DispatchMessage-

GetCommandLine-

GetMessage-

andere Ressourcen

PostQuitMessage-

Referenz-

TranslateMessage-

Windows