Retroceder   Foros del Web > Temas generales de computación > Programación > C/C++

Respuesta
 
Herramientas Desplegado
Antiguo 13-nov-2007, 16:31   #1 (permalink)
Francisco01 está en el buen camino
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Enviar un mensaje por MSN a Francisco01
Win api

Bueno, soy nuevo en c++, y aun mas en la api de windows, me gustaria saber para que sirven los parametros de winmain ya que creo que siempre son los mismos (creo), y tambien tengo otra duda, para que sirve la palabra callback, xD, quizas vean que estas preguntas son bastante de novato xD, si piensan eso tambien me pueden dar un link de un buen manual, que no tardare en leerlo ^^.

Un saludo
Francisco01 está desconectado   Responder Citando
Antiguo 13-nov-2007, 23:51   #2 (permalink)
Instru está en el buen camino
 
Avatar de Instru
 
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.440
Re: Win api

Si eres nuevo con C y C++ no te recomiendo que te metas mucho en la WINAPI ya qu esta si es algo compleja y confusa(sobretodo al principio).
Aun asi.

En la Winmain es casi como una main. Tiene sus argumentos que contienen los parametros pasados al programa al ejecutarse. No recuerdo bien todos los parametros que lleva, pero creo que unode ellos es la instancia de la ventana(algo asi como un ID para identificarla) y si mal no recuerdo hay uno que define alguna de las propiedades de la ventana.

Las callback son funciones que son llamadas constantemenete por un hilo o proceso ya sea ajeno o hecho por nosotros.

La palabra callback como palabra clave no existe en realidad. Lo que sucede es que Microsoft en su horrible WINPAI metio miles de definiciones y le puso y cambion nombres a muchas cosas.

Pero en realidad cualquier funcion puede ser callback. Puedes checar algo sobre punteros a funciones para que te des una idea de como funcionan.

Saludos
__________________
Usa las putas faqs:
http://www.forosdelweb.com/showthread.php?t=264647
Instru está desconectado   Responder Citando
Antiguo 14-nov-2007, 04:12   #3 (permalink)
Eternal Idol tiene algunos puntos positivos de karma
 
Avatar de Eternal Idol
 
Fecha de Ingreso: mayo-2004
Ubicación: Europa (VdL)
Mensajes: 5.157
Re: Win api

Documentacion
Eternal Idol está desconectado   Responder Citando
Antiguo 14-nov-2007, 06:58   #4 (permalink)
Francisco01 está en el buen camino
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Enviar un mensaje por MSN a Francisco01
Re: Win api

Gracias por las respuestas, pero la cuestion, esque he visto varias veces la funcion winmain y veo que siempre tiene los mismo parametros, y siempre con los mismos textos, (me refiero a lo que se le pasa por parametro, siempre es lo mismo) y ya que Instru me dijo que no es recomendable empezar por winapi, por donde devo empezar? os digo, que tengo conocimientos sobre php, y algo basico sobre c++, con esto quiero decir, que se lo que son condicionales, bucles, punteros, referencias etc, sabiando eso, por donde crees que seria mejor empezar?

Gracias por las respuestas
Francisco01 está desconectado   Responder Citando
Antiguo 14-nov-2007, 07:30   #5 (permalink)
Eternal Idol tiene algunos puntos positivos de karma
 
Avatar de Eternal Idol
 
Fecha de Ingreso: mayo-2004
Ubicación: Europa (VdL)
Mensajes: 5.157
Re: Win api

Cita:
Iniciado por Francisco01 Ver Mensaje
Gracias por las respuestas, pero la cuestion, esque he visto varias veces la funcion winmain y veo que siempre tiene los mismo parametros, y siempre con los mismos textos, (me refiero a lo que se le pasa por parametro, siempre es lo mismo) y ya que Instru me dijo que no es recomendable empezar por winapi, por donde devo empezar? os digo, que tengo conocimientos sobre php, y algo basico sobre c++, con esto quiero decir, que se lo que son condicionales, bucles, punteros, referencias etc, sabiando eso, por donde crees que seria mejor empezar?

Gracias por las respuestas
No lo es, lee la descripcion que deje de nuevo y despues ejecuta tu programa con diferentes parametros desde linea de comandos y vas a ver que eso no es asi.

"Ejecutable hola" y "Ejecutable hola chau" no es lo mismo en lpCmdLine.
Eternal Idol está desconectado   Responder Citando
Antiguo 14-nov-2007, 08:09   #6 (permalink)
Francisco01 está en el buen camino
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Enviar un mensaje por MSN a Francisco01
Re: Win api

A ver, veamoslo con ejemplos, la funcion que tengo la instancio de esta forma
Código:
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR lpCmdLine,
                     int nCmdShow)
Me pueden decir, de que forma yo puedo poner otra cosa hay, y que no de error al compilar (ya que esa es mi forma de hacer pruebas ^^)

Un saludo
Francisco01 está desconectado   Responder Citando
Antiguo 14-nov-2007, 08:45   #7 (permalink)
Eternal Idol tiene algunos puntos positivos de karma
 
Avatar de Eternal Idol
 
Fecha de Ingreso: mayo-2004
Ubicación: Europa (VdL)
Mensajes: 5.157
Re: Win api

Cita:
Iniciado por Francisco01 Ver Mensaje
A ver, veamoslo con ejemplos, la funcion que tengo la instancio de esta forma
Código:
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR lpCmdLine,
                     int nCmdShow)
Me pueden decir, de que forma yo puedo poner otra cosa hay, y que no de error al compilar (ya que esa es mi forma de hacer pruebas ^^)
Esos parametros son siempre 4 y tienen esos nombres y tipos (cosa modificable pero no util). Lo que puede cambiar es el contenido de los mismos de ejecucion a ejecucion ...
Eternal Idol está desconectado   Responder Citando
Antiguo 14-nov-2007, 16:21   #8 (permalink)
Francisco01 está en el buen camino
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Enviar un mensaje por MSN a Francisco01
Re: Win api

Pues eso es lo que quieor saber, como los modifico?
Francisco01 está desconectado   Responder Citando
Antiguo 15-nov-2007, 00:10   #9 (permalink)
Eternal Idol tiene algunos puntos positivos de karma
 
Avatar de Eternal Idol
 
Fecha de Ingreso: mayo-2004
Ubicación: Europa (VdL)
Mensajes: 5.157
Re: Win api

Cita:
Iniciado por Francisco01 Ver Mensaje
Pues eso es lo que quieor saber, como los modifico?
Como mucho les podes cambiar el nombre y el tipo, pero eso no va a hacer que contengan valores diferentes ... no sirve para nada por no decir algo mas fuerte.
Eternal Idol está desconectado   Responder Citando
Antiguo 15-nov-2007, 06:18   #10 (permalink)
Francisco01 está en el buen camino
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Enviar un mensaje por MSN a Francisco01
Re: Win api

Ok, y entonces, siempre que cree un winmain, tendra que ser exactamente con esos valores, pues a eso me referia con poner siempre lo mismo jeje, muchas gracias por vuestras respuestas ^^.

Un saludo
Francisco01 está desconectado   Responder Citando
Antiguo 15-nov-2007, 06:40   #11 (permalink)
Eternal Idol tiene algunos puntos positivos de karma
 
Avatar de Eternal Idol
 
Fecha de Ingreso: mayo-2004
Ubicación: Europa (VdL)
Mensajes: 5.157
Re: Win api

Cita:
Iniciado por Francisco01 Ver Mensaje
Ok, y entonces, siempre que cree un winmain, tendra que ser exactamente con esos valores, pues a eso me referia con poner siempre lo mismo jeje, muchas gracias por vuestras respuestas ^^.

Un saludo
Si, los NOMBRES de los parametros son los mismos, sus valores no.
Eternal Idol está desconectado   Responder Citando
Antiguo 15-nov-2007, 07:04   #12 (permalink)
Francisco01 está en el buen camino
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Enviar un mensaje por MSN a Francisco01
Re: Win api

Y como puedo ver que valores tienen? (perdona por mi ignorancia xD)

Gracias por todo
Francisco01 está desconectado   Responder Citando
Antiguo 15-nov-2007, 08:15   #13 (permalink)
Eternal Idol tiene algunos puntos positivos de karma
 
Avatar de Eternal Idol
 
Fecha de Ingreso: mayo-2004
Ubicación: Europa (VdL)
Mensajes: 5.157
Re: Win api

Cita:
Iniciado por Francisco01 Ver Mensaje
Y como puedo ver que valores tienen? (perdona por mi ignorancia xD)

Gracias por todo
Podes usar MessageBox, OutputDebugString o depurar el programa que es la mejor manera.
Eternal Idol está desconectado   Responder Citando
Antiguo 15-nov-2007, 08:30   #14 (permalink)
Francisco01 está en el buen camino
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Enviar un mensaje por MSN a Francisco01
Re: Win api

De momento de lo que has dicho he usado MessageBox, lo demas no lo conozco xD, pero que tiene que ver eso con ver los valores de los parametros?

Gracias ^^
Francisco01 está desconectado   Responder Citando
Antiguo 15-nov-2007, 08:36   #15 (permalink)
Eternal Idol tiene algunos puntos positivos de karma
 
Avatar de Eternal Idol
 
Fecha de Ingreso: mayo-2004
Ubicación: Europa (VdL)
Mensajes: 5.157
Re: Win api

Cita:
Iniciado por Francisco01 Ver Mensaje
De momento de lo que has dicho he usado MessageBox, lo demas no lo conozco xD, pero que tiene que ver eso con ver los valores de los parametros?
Código:
MessageBox(0, "Linea de comandos", lpCmdLine, MB_OK);
OutputDebugString(lpCmdLine);
Eternal Idol está desconectado   Responder Citando
Antiguo 15-nov-2007, 14:17   #16 (permalink)
Francisco01 está en el buen camino
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Enviar un mensaje por MSN a Francisco01
Re: Win api

Sorry pero con lo que me pusiste hay no veo nada, solo sale una ventana con lo de Linea de Comandos, y como titulo de la ventana no sale nada :/

Un saludo y gracias de nuevo
Francisco01 está desconectado   Responder Citando
Antiguo 15-nov-2007, 15:03   #17 (permalink)
Eternal Idol tiene algunos puntos positivos de karma
 
Avatar de Eternal Idol
 
Fecha de Ingreso: mayo-2004
Ubicación: Europa (VdL)
Mensajes: 5.157
Re: Win api

Cita:
Iniciado por Francisco01 Ver Mensaje
Sorry pero con lo que me pusiste hay no veo nada, solo sale una ventana con lo de Linea de Comandos, y como titulo de la ventana no sale nada :/

Un saludo y gracias de nuevo
Ejecutalo con una linea de comandos ... Inicio>>Ejecutar>>cmd.exe "Programa.exe param1 param2".
Eternal Idol está desconectado   Responder Citando
Antiguo 15-nov-2007, 19:08   #18 (permalink)
scrolling está en el buen camino
 
Fecha de Ingreso: junio-2005
Ubicación: México, México
Mensajes: 310
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-nov-2007 a las 19:27.
scrolling está desconectado   Responder Citando
Antiguo 16-nov-2007, 00:11   #19 (permalink)
Eternal Idol tiene algunos puntos positivos de karma
 
Avatar de Eternal Idol
 
Fecha de Ingreso: mayo-2004
Ubicación: Europa (VdL)
Mensajes: 5.157
Re: Win api

Cita:
Iniciado por scrolling Ver Mensaje
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)
Mira la documentacion, el tercer parametro es UNA cadena y el cuarto no esta relacionado con la linea de comandos.

Cita:
Iniciado por scrolling Ver Mensaje
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.
Documentacion.
Eternal Idol está desconectado   Responder Citando
Antiguo 16-nov-2007, 07:12   #20 (permalink)
Francisco01 está en el buen camino
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Enviar un mensaje por MSN a Francisco01
Re: Win api

Gracias a los dos, me aclararon bastante ^^, me dijeron que tipo de dato era HINSTANCE, me pueden decir ahora que tipo de dato es LPSTR?

Gracias otra vez ^^
Francisco01 está desconectado   Responder Citando
Antiguo 16-nov-2007, 07:17   #21 (permalink)
Eternal Idol tiene algunos puntos positivos de karma
 
Avatar de Eternal Idol
 
Fecha de Ingreso: mayo-2004
Ubicación: Europa (VdL)
Mensajes: 5.157
Re: Win api

Cita:
Iniciado por Francisco01 Ver Mensaje
Gracias a los dos, me aclararon bastante ^^, me dijeron que tipo de dato era HINSTANCE, me pueden decir ahora que tipo de dato es LPSTR?

Gracias otra vez ^^
Es char * (LP=LONG POINTER, STR=STRING). Tambien esta en la MSDN documentado:

Windows Data Types.
Eternal Idol está desconectado   Responder Citando
Antiguo 16-nov-2007, 07:58   #22 (permalink)
Francisco01 está en el buen camino
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Enviar un mensaje por MSN a Francisco01
Re: Win api

Bueno, de momento ya se me aclararon el monton de dudas que tenia, jeje, gracias por ayudarme, aunque pronto estare aqui de nuevo dando el coñazo (si no es en 5 min xD).
Muchas gracias por vuestra ayuda
Francisco01 está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 07:18.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24