Funzione WinMain (winbase.h)

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

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

Sintassi

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

Parametri

[in] hInstance

Tipo: HINSTANCE

Handle all'istanza corrente dell'applicazione.

[in] hPrevInstance

Tipo: HINSTANCE

Handle all'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 casualmente e archiviare il nome in modo che possa essere ottenuto solo da un utente autorizzato. In alternativa, è possibile usare un file per 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 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 del messaggio, deve restituire zero.

Commenti

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.

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 del messaggio quando riceve un messaggio di WM_QUIT . A quel punto, WinMain deve uscire dall'applicazione, restituendo il valore passato nel parametro wParam del messaggio di WM_QUIT. Se WM_QUIT è stato ricevuto come risultato della chiamata a PostQuitMessage, il valore di wParam è il valore del parametro nExitCode della funzione PostQuitMessage. 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, microsoft Visual Studio C++ conforme usa il nome wWinMain per il punto di ingresso Unicode.

Esempio

Nell'esempio di codice seguente viene illustrato 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);
}

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winbase.h (include Windows.h)

Vedi anche

Informazioni concettuali

CreateMutex

DispatchMessage

GetCommandLine

GetMessage

Altre risorse

PostQuitMessage

Riferimento

TranslateMessage

Windows