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 la sección 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 es 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 fin. Para limitar la aplicación a una instancia por usuario, cree un archivo bloqueado en el directorio de perfiles del usuario.
[in] lpCmdLine
Tipo: LPSTR
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 contenido en el parámetro wParam de ese mensaje. Si la función finaliza antes de escribir el bucle de mensajes, debe devolver cero.
Comentarios
Muchos marcos de programación usan el nombre WinMain por convención. En función del marco de programación, la llamada a la función WinMain puede ir precedida y seguida de actividades adicionales específicas de ese marco.
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 durante el resto de la ejecución de la aplicación. Finalice el bucle del mensaje cuando reciba un mensaje de WM_QUIT . En ese momento, 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 nExitCode de la función PostQuitMessage. Para obtener más información, vea Crear un bucle de mensajes.
Las aplicaciones ANSI pueden usar el parámetro lpCmdLine de la función WinMain para tener acceso a la cadena de la línea de comandos, excepto el nombre del programa. Tenga en cuenta que lpCmdLine usa el tipo de datos 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 proporciona una línea de comandos Unicode. Por ejemplo, el cumplimiento de Microsoft Visual Studio C++ 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 | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | winbase.h (incluya Windows.h) |
Consulte también
Conceptual
Otros recursos
Referencia
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de