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 Anwendungseinstiegspunkt 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 für die aktuelle instance der Anwendung.
[in, optional] hPrevInstance
Typ: HINSTANCE
Ein Handle zum vorherigen instance der Anwendung. Dieser Parameter ist immer NULL. Wenn Sie erkennen müssen, ob bereits eine andere instance vorhanden ist, erstellen Sie mithilfe der CreateMutex-Funktion einen eindeutig benannten Mutex. CreateMutex ist auch dann erfolgreich, wenn der Mutex bereits vorhanden ist, aber die Funktion gibt ERROR_ALREADY_EXISTS zurück. Dies gibt an, dass eine weitere instance Ihrer Anwendung vorhanden ist, da zuerst der Mutex erstellt wurde. Ein böswilliger Benutzer kann diesen Mutex jedoch erstellen, bevor Sie dies tun, und verhindern, dass Ihre Anwendung gestartet wird. Um dies zu verhindern, erstellen Sie einen zufällig benannten Mutex, und speichern Sie den Namen, sodass er nur von einem autorisierten Benutzer abgerufen werden kann. Alternativ können Sie zu diesem Zweck eine Datei verwenden. Um Ihre Anwendung auf eine instance 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. Verwenden Sie die GetCommandLine-Funktion , um die gesamte Befehlszeile abzurufen.
[in] nShowCmd
Typ: int
Steuert, wie das Fenster angezeigt werden soll. Dieser Parameter kann jeder der Werte sein, die im nCmdShow-Parameter für die ShowWindow-Funktion angegeben werden können.
Rückgabewert
Typ: int
Wenn die Funktion erfolgreich ist und beendet wird, wenn sie eine WM_QUIT Nachricht empfängt, sollte sie den Exitwert zurückgeben, der im wParam-Parameter dieser Nachricht enthalten ist. Wenn die Funktion vor dem Eingeben der Nachrichtenschleife beendet wird, sollte sie null zurückgeben.
Hinweise
Der Name WinMain wird von vielen Programmierframeworks konventional verwendet. Abhängig vom Programmierframework kann dem Aufruf der WinMain-Funktion vorangestellt werden, gefolgt von zusätzlichen Aktivitäten, die für dieses Framework spezifisch sind.
Ihr WinMain sollte die Anwendung initialisieren, das fenster Standard anzeigen und eine Nachrichtenabruf- und -dispatchschleife eingeben, die die Steuerungsstruktur der obersten Ebene für den Rest der Ausführung der Anwendung darstellt. Beenden Sie die Nachrichtenschleife, wenn sie eine WM_QUIT Nachricht empfängt. An diesem Punkt sollte Ihr WinMain die Anwendung beenden und den Wert zurückgeben, der im wParam-Parameter der WM_QUIT Nachricht übergeben wurde. Wenn WM_QUIT als Ergebnis des Aufrufs von PostQuitMessage empfangen wurde, ist der Wert von wParam der Wert des nExitCode-Parameters der PostQuitMessage-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-Datentyps 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 bieten möglicherweise einen alternativen Einstiegspunkt, der eine Unicode-Befehlszeile bereitstellt. Der C++-Konformer von Microsoft Visual Studio verwendet beispielsweise den Namen wWinMain für den Unicode-Einstiegspunkt.
Beispiel
Im folgenden Codebeispiel wird die Verwendung von WinMain veranschaulicht.
#include <windows.h>
int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow)
{
return MessageBox(NULL, "hello, world", "caption", 0);
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winbase.h (Windows.h einschließen) |
Siehe auch
Konzept
Andere Ressourcen
Referenz
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für