Tema: Win api
Ver Mensaje Individual
  #18 (permalink)  
Antiguo 15/11/2007, 20:08
scrolling
 
Fecha de Ingreso: junio-2005
Ubicación: México, México
Mensajes: 429
Antigüedad: 19 años, 6 meses
Puntos: 1
Re: Win api

Es como cuando en C/C++ en la funcion "main" le pones parametros:

Código:
...
 
int main (int argc, char* argv[]) {
 
...
Si te fijas, todos los ejemplos que veas de la funcion "main" tendra esos mismos parametros y los mismos nombres. Esas son normas que se usan para entender mejor el programa, pero bien podrias hacer esto:

Código:
...
 
int main (int num_argumentos, char* cad_argumentos[]) {
 
...
Al final sirven para lo mismo, pero de la primer manera se entiende más porque es una costumbre de los programadores. Obviamente si sabes C++ (dices que sabes poco), me imagino que sabes para que son los argumentos de main. Si no sabes, es ahi a donde se referia Instru que debes empezar.

Volviendo a la funcion winmain, podria quedar asi:

Código:
int APIENTRY WinMain(HINSTANCE manejador_de_instancia,
                     HINSTANCE instancia_previa,
                     LPSTR argumentos_de_linea_de_comandos,
                     int numero_de_argumentos_en_la_linea_de_comandos)
El tipo de dato siempre tiene que ser el mismo, en este caso son punteros y enteros, pero los nombres son modificados (segun Microsoft) para ser mas descriptivos, eso lo modifican con el clasico typedef. Si no mal recuerdo HINSTANCE es un unsigned int, entonces lo unico que hacen es:

Código:
typedef unsigned int HINSTANCE;
Y asi le hacen con muuuuchos tipos de datos; pero entonces que pasa?, ya no parece C, sino WinC o algo asi... :P y confunden a muchos.

El primer parametro es el identificador de tu proceso, el segundo parametro es un parametro que se guarda por compatibilidad (si no mal recuerdo) con version anteriores de Windows en las que podias tener abiartas varias versiones de un mismo programa (actualmente es inservible). El tercer argumento funciona igual que el char* argv[] de la funcion main y el cuarto parametro es igual que el int argc de la funcion main.

El manejador de la instancia no lo puedes modificar (creo) porque ese te lo da windows automaticamente. al igual que la instancia_previa, los demas argumentos los modificas ejecutando el programa con argumentos, como:

Código:
mi_programa.exe argumento1
En ese caso la variable int numero_de_argumentos_en_la_linea_de_comandos tendra un valor de 2 y el "argumento1" lo obtienes con el parametro LPSTR argumentos_de_linea_de_comandos. LPSTR no es mas que un "Long Pointer to STRing", o sea un simple char*, pero, como te decia, le cambiaron el nombre con un typedef

Aclaro que no estoy seguro de todo esto, ya que eso de la winapi lo vi hace mucho tiempo y no me acuerdo bien, si estoy equivocado ahi me corrigen :P.

Saludos!

Última edición por scrolling; 15/11/2007 a las 20:27