Red de conocimientos turísticos - Conocimientos sobre calendario chino - Acerca de la función Winmain en VC (¿Qué es WINAPI?)

Acerca de la función Winmain en VC (¿Qué es WINAPI?)

La función WinMain() es equivalente a la función main() en el programa de consola.

Esta función es donde comienza la ejecución del programa y donde se realiza la inicialización básica para el resto del programa.

Para permitir que Windows pase datos, la función WinMain() tiene cuatro parámetros formales y un valor de retorno de tipo int. Su prototipo es el siguiente:

int WINAPI WinMain(. HINSTANCE hInstance,

p>

HINSTANCE hPrevInstance )

LPSTR lpCmdLine,

int nCmdShow

);

Después del especificador de tipo de retorno int, también hay un especificador de función WINAPI. WINAPI es una macro definida por Windows que hace que el sistema maneje las funciones API de Windows de una manera específica para la función API de Windows

, manejando así el nombre de la función y los argumentos de una manera específica. Esto es diferente de cómo C normalmente maneja las funciones. Los detalles específicos no son importantes, es simplemente la forma en que Windows los requiere, así que simplemente coloque el nombre de la macro WINAPI delante del nombre de la función que llama Windows.

Si realmente desea conocer la convención de llamada, consulte la documentación que viene con Visual

C, que explica la convención de llamada. WINAPI se define como __stdcall; colocar este modificador antes del nombre de la función indica que se utiliza la convención de llamadas estándar de Windows

. Esto requiere insertar los parámetros en la pila en orden inverso y borrar la pila al final de la función de llamada. Verá el modificador CALLBACK más adelante en este capítulo, que también se define como __stdcall y, por lo tanto, es equivalente a WINAPI

. La convención de llamada estándar de C se especifica mediante el modificador __cdecl.

Los cuatro parámetros pasados ​​por Windows a la función WinMain() contienen datos importantes:

hEl tipo de instancia es HINSTANCE, que es el identificador de una instancia -

En este artículo En este caso, la instancia es el programa en ejecución. Un identificador es un valor entero que identifica algún tipo de objeto (en este caso, una instancia de la aplicación). El valor entero real del identificador no es importante. Puede haber varios programas ejecutándose en Windows en un momento dado, lo que hace posible que varias copias de la misma aplicación estén activas al mismo tiempo, lo que debe identificarse. Por lo tanto, el identificador hInstance identifica una réplica específica. Si

el programa inicia varias copias, cada copia tiene su propio valor hInstance único. Como veremos en breve, los identificadores también se pueden utilizar para identificar una variedad de otras cosas.

hPrevInstance se hereda de las versiones de 16 bits de los sistemas operativos Windows y podemos ignorarlo con seguridad. En las versiones actuales de Windows, este parámetro siempre está vacío.

lpCmdLine es un puntero a una cadena que contiene los caracteres de la línea de comando que iniciaron el programa. El tipo LPSTR es

otro tipo de Windows que se utiliza para especificar un puntero de 32 bits (largo) a una cadena o, cuando se compila en modo de 64 bits, un puntero de 64 bits a una cadena.

Otra

versión de WinMain() que acepta un LPWSTR, para usar con Unicode. Una ventana se puede mostrar normalmente o minimizarse; por ejemplo, el acceso directo de un programa puede especificar que el programa se muestre minimizado cuando se inicia.

Este parámetro

puede ser uno de un conjunto de valores fijos definidos por constantes simbólicas como SW_SHOWNORMAL y SW_SHOWMINNOACTIVE. Hay 9 constantes en esta categoría que definen los estilos de visualización de ventanas

y todas comienzan con SW_. Normalmente, el valor de nCmdShow no se verifica, sino que se pasa directamente a la función API de Windows responsable de mostrar la ventana de la aplicación.

La función WinMain() en el programa necesita completar las siguientes cuatro tareas:

Decirle a Windows qué tipo de ventana necesita el programa

Crear la ventana del programa

Inicializar la ventana del programa

Recuperar mensajes de Windows pertenecientes al programa