Compartir a través de


Función WinMain (winbase.h)

Punto de entrada proporcionado por el usuario para una aplicación gráfica basada en Windows.

winMain es el nombre convencional que se usa para el punto de entrada de la aplicación. Para obtener más información, vea Comentarios.

Sintaxis

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

Parámetros

[in] hInstance

Tipo: HINSTANCE

Identificador de la instancia actual de la aplicación.

[in, optional] hPrevInstance

Tipo: HINSTANCE

Identificador de la instancia anterior de la aplicación. Este parámetro siempre se NULL. Si necesita detectar si ya existe otra instancia, cree una exclusión mutua con nombre único mediante la función CreateMutex. createMutex se realizará correctamente incluso si la exclusión mutua ya existe, pero la función devolverá ERROR_ALREADY_EXISTS. Esto indica que existe otra instancia de la aplicación, ya que creó primero la exclusión mutua. Sin embargo, un usuario malintencionado puede crear esta exclusión mutua antes de hacerlo e impedir que la aplicación se inicie. Para evitar esta situación, cree una exclusión mutua con nombre aleatorio y almacene el nombre para que un usuario autorizado solo pueda obtenerlo. Como alternativa, puede usar un archivo para este propósito. Para limitar la aplicación a una instancia por usuario, cree un archivo bloqueado en el directorio de perfil del usuario.

[in] lpCmdLine

Tipo: LPSTR de

Línea de comandos de la aplicación, excepto el nombre del programa. Para recuperar toda la línea de comandos, use la función GetCommandLine.

[in] nShowCmd

Tipo: int

Controla cómo se va a mostrar la ventana. Este parámetro puede ser cualquiera de los valores que se pueden especificar en el parámetro nCmdShow para la función ShowWindow.

Valor devuelto

Tipo: int

Si la función se realiza correctamente, finalizando cuando recibe un mensaje de WM_QUIT, debe devolver el valor de salida incluido en el parámetro wParam wParam. Si la función finaliza antes de escribir el bucle de mensajes, debe devolver cero.

Observaciones

Muchos marcos de programación usan el nombre WinMain. En función del marco de programación, la llamada a la función de WinMain puede ir precedida y seguida de actividades adicionales específicas de ese marco.

El WinMain debe inicializar la aplicación, mostrar su ventana principal y escribir un bucle de recuperación y distribución de mensajes que sea la estructura de control de nivel superior para el resto de la ejecución de la aplicación. Finalice el bucle de mensajes cuando reciba un mensaje de WM_QUIT. En ese momento, el WinMain debe salir de la aplicación y devolver el valor pasado en el parámetro wParam del mensaje WM_QUIT. Si WM_QUIT se recibió como resultado de llamar a PostQuitMessage, el valor de wParam es el valor del parámetro PostQuitMessage de la función nExitCode. Para obtener más información, vea Creación de un bucle de mensajes.

Las aplicaciones ANSI pueden usar el parámetro lpCmdLine de la función WinMain para acceder a la cadena de línea de comandos, excepto el nombre del programa. Tenga en cuenta que lpCmdLine usa el tipo de datos de LPSTR en lugar del tipo de datos LPTSTR . Esto significa que los programas Unicode no pueden usar WinMain. La función GetCommandLineW se puede usar para obtener la línea de comandos como una cadena Unicode. Algunos marcos de programación pueden proporcionar un punto de entrada alternativo que proporcione una línea de comandos Unicode. Por ejemplo, el cumplidor de C++ de Microsoft Visual Studio usa el nombre wWinMain para el punto de entrada Unicode.

Ejemplo

En el ejemplo de código siguiente se muestra el uso de WinMain

#include <windows.h>

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

Requisitos

Requisito Valor
cliente mínimo admitido Windows 2000 Professional [solo aplicaciones de escritorio]
servidor mínimo admitido Windows 2000 Server [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de winbase.h (incluya Windows.h)

Consulte también

conceptual de

CreateMutex

DispatchMessage

GetCommandLine

GetMessage

otros recursos

PostQuitMessage

de referencia de

TranslateMessage

Windows