Condividi tramite


Funzione WinMain (winbase.h)

Punto di ingresso fornito dall'utente per un'applicazione grafica basata su Windows.

winMain è il nome convenzionale usato per il punto di ingresso dell'applicazione. Per altre informazioni, vedere Osservazioni.

Sintassi

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

Parametri

[in] hInstance

Tipo: HINSTANCE

Handle per l'istanza corrente dell'applicazione.

[in, optional] hPrevInstance

Tipo: HINSTANCE

Handle per l'istanza precedente dell'applicazione. Questo parametro è sempre NULL. Se è necessario rilevare se esiste già un'altra istanza, creare un mutex denominato in modo univoco usando la funzione CreateMutex . createMutex avrà esito positivo anche se il mutex esiste già, ma la funzione restituirà ERROR_ALREADY_EXISTS. Ciò indica che esiste un'altra istanza dell'applicazione, perché ha creato prima il mutex. Tuttavia, un utente malintenzionato può creare questo mutex prima di eseguire e impedire l'avvio dell'applicazione. Per evitare questa situazione, creare un mutex denominato in modo casuale e archiviare il nome in modo che possa essere ottenuto solo da un utente autorizzato. In alternativa, è possibile usare un file a questo scopo. Per limitare l'applicazione a un'istanza per utente, creare un file bloccato nella directory del profilo dell'utente.

[in] lpCmdLine

Tipo: LPSTR

Riga di comando per l'applicazione, escluso il nome del programma. Per recuperare l'intera riga di comando, usare la funzione GetCommandLine.

[in] nShowCmd

Tipo: int

Controlla la modalità di visualizzazione della finestra. Questo parametro può essere uno qualsiasi dei valori che è possibile specificare nel parametro nCmdShow per la funzione ShowWindow.

Valore restituito

Tipo: int

Se la funzione ha esito positivo, terminando quando riceve un messaggio di WM_QUIT, deve restituire il valore di uscita contenuto nel parametro wParam del messaggio. Se la funzione termina prima di immettere il ciclo di messaggi, deve restituire zero.

Osservazioni

Il nome WinMain viene usato per convenzione da molti framework di programmazione. A seconda del framework di programmazione, la chiamata alla funzione winMain può essere preceduta e seguita da attività aggiuntive specifiche di tale framework.

Il WinMain deve inizializzare l'applicazione, visualizzarne la finestra principale e immettere un ciclo di recupero e invio di messaggi che rappresenta la struttura di controllo di primo livello per il resto dell'esecuzione dell'applicazione. Terminare il ciclo di messaggi quando riceve un messaggio di WM_QUIT. A questo punto, il WinMain deve uscire dall'applicazione, restituendo il valore passato nel parametro WM_QUIT messaggio wParam. Se WM_QUIT è stato ricevuto in seguito alla chiamata di PostQuitMessage, il valore di wParam è il valore del parametro di PostQuitMessage funzione nExitCode. Per altre informazioni, vedere Creazione di un ciclo di messaggi.

Le applicazioni ANSI possono usare il parametro lpCmdLine della funzione WinMain per accedere alla stringa della riga di comando, escluso il nome del programma. Si noti che lpCmdLine usa il tipo di dati LPSTR anziché il tipo di dati LPTSTR. Ciò significa che WinMain non può essere usato dai programmi Unicode. La funzione GetCommandLineW può essere usata per ottenere la riga di comando come stringa Unicode. Alcuni framework di programmazione potrebbero fornire un punto di ingresso alternativo che fornisce una riga di comando Unicode. Ad esempio, il conforme a Microsoft Visual Studio C++ usa il nome wWinMain per il punto di ingresso Unicode.

Esempio

L'esempio di codice seguente illustra l'uso di WinMain

#include <windows.h>

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

Fabbisogno

Requisito Valore
client minimo supportato Windows 2000 Professional [solo app desktop]
server minimo supportato Windows 2000 Server [solo app desktop]
piattaforma di destinazione Finestre
intestazione winbase.h (include Windows.h)

Vedere anche

concettuale

CreateMutex

DispatchMessage

GetCommandLine

GetMessage

altre risorse

PostQuitMessage

riferimento

TranslateMessage

Windows