SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: scatterbrain en Lunes 31 de Mayo de 2004, 23:54
-
quiero saber un poco sobre los argumentos que recibe la funcion
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR zCmdLine,nose);
especificamente sobre argumentos similares a los de la funcion main
(int argc,char **argv);
por favor si alguien sabe...
o tiene alguna direccion donde lo pueda encontrar...
:hola:
-
La función de entrada de un programa Windows es "WinMain", en lugar de la conocida "main". Normalmente, la definición de esta función cambia muy poco de una aplicaciones a otras. Se divide en tres partes claramente diferenciadas: declaración, inicialización y bucle de mensajes.
Parámetros de entrada de "WinMain"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)
La función WinMain tiene cuatro parámetros de entrada:
hInstance es un manipulador para la instancia del programa que estamos ejecutando. Cada vez que se ejecuta una aplicación, Windows crea una Instancia para ella, y le pasa un manipulador de dicha instancia a la aplicación.
hPrevInstance es un manipulador a instancias previas de la misma aplicación. Como Windows es multitarea, pueden existir varias versiones de la misma aplicación ejecutándose, varias instancias. En Windows 3.1, este parámetro nos servía para saber si nuestra aplicación ya se estaba ejecutando, y de ese modo se podían compartir los datos comunes a todas las instancias. Pero eso era antes, ya que en Win32 usa un segmento distinto para cada instancia y este parámetro es siempre NULL, sólo se conserva por motivos de compatibilidad.
lpszCmdParam, esta cadena contiene los argumentos de entrada del comando de línea.
nCmdShow, este parámetro especifica cómo se mostrará la ventana. Para ver sus posibles valores consultar valores de ncmdshow. Se recomienda no usar este parámetro en la función ShowWindow la primera vez que se ésta es llamada. En su lugar debe usarse el valor SW_SHOWDEFAULT.
http://winapi.conclase.net/curso/index.php?cap=003 (http://winapi.conclase.net/curso/index.php?cap=003)
Saludos :hola:
-
Te felicito © Jonathan ©...
apenas un año largo que te conozco y el cambio ha sido impresionante!!!
Ahora hablas con mucha propiedad y con muy buena fundamenatción!!!
me alegra haber sido parte de ese proceso de aprendizaje asi fuese en menor medida...
while(1)
{
printf("FELICITACIONES!!!");
}
:bravo: :beer:
-
Te felicito © Jonathan ©...
apenas un año largo que te conozco y el cambio ha sido impresionante!!!
Ahora hablas con mucha propiedad y con muy buena fundamenatción!!!
me alegra haber sido parte de ese proceso de aprendizaje asi fuese en menor medida...
while(1)
{
printf("FELICITACIONES!!!");
}
:bravo: :beer:
Es verdad, yo lo conozco hace menos y en este tiempo tubo un cambio rotundo, me alegra :D
saludos.
-
no entiendo por que la diferencia.. para mi © Jonathan © siempre ha sido igual o ¿es que antes como se expresaba? :unsure:
-
Pues no me queda mas que agradecer. Todo lo que aprendo y consigo, a pesar de que es por esforzarme se lo debo a todas las personas a las cuales les pregunto mis dudas y en ves de desirme no "tengo tiempo para ayudarte"... me dan una mano y me explican y ayudan en todo lo que pueden, aqui en el foro he encontrado muchas personas las cuales me han ayudado y realmente mucho.
A todos... MIL GRACIAS!!! :D:D :lol: :)
Y a las personas que creen que otorgar conocimientos a alguien que los pide es perder la oportunidad de ganar dinero, pues no es asi, al contrario, es un punto mas a favor y un amigo que ganan. Saludos :D :hola:
-
:bravo:
eso es muy bueno,de hecho excelente ,yo tambien te felicito Jonathan.
y gracias por la pagina esta buena.
pero,tengo nua duda todavia ...
lpszCmdParam, esta cadena contiene los argumentos de entrada del comando de línea.
o sea ,si yo ejecuto el programa desde:
c:/(ejemplo)
entonces lpszCmdParam,que valor toma?
y tengo entendido que no son valores ascii....
????????
-
Bueno recuerdo que cuando jho...
entro al foro comentaba que queria aprender mucho de programación, y al comienzo se metio de a poco en poco en el foro y despues ya estaba resolviendo todos mis retos.
Segun veo ha aprendido mucho a estructurar el codigo y ya no escribe como antes sus respuestas.. ahora se nota que esta totalmente convencido de lo que habla.
por eso es moderador
me alegra mucho por el , es una persona muy inteligente y muy dedicada...
estuvo un periodo aislado del foro por motivos personales , pero ya veo que ha superado esos pèqueños inconvenientes.
Me gustaria que contestaras nuevamente este post...
tal vez hoy en dia contestaras muy diferente...
http://foros.solocodigo.com/index.php?showtopic=1858&hl= (http://foros.solocodigo.com/index.php?showtopic=1858&hl=)
ahh y perdon por todos los post que pusiste en ese entonces y no pude copntestar.. aunque creo que ya sabes las respuestas :P
-
haaa.... ahora entiendo por eso es que yo no tenia idea ya que yo en esa epoca aun no conocia esta grandiosa pagina...
-
<_<
y mi pregunta??
:(
-
lpszCmdParam, esta cadena contiene los argumentos de entrada del comando de línea.
Un string (o cadena de caracteres) con los argumentos de linea de comando. No incluye el nombre del programa
WinMain( ) es en Windows el equivalente al main( ) de DOS o UNIX.
En main() los argumentos se pasan con: int main(int argc, char* argv[]);
"int argc y char* argv[];"
Por convención, argv[0] es el nombre con que se ha llamado al programa (normalmente será el nombre del fichero ejecutable incluyendo su dirección completa -path-). Este dato es proporcionado automáticamente por el SO... así pues, el valor mínimo para argc es 1, después seguirán los que introduzcamos en la línea de comandos, separados por espacios.
//********/
#include <stdio.h> // Prueba de parámetros para función main
int main(int argc, char* argv[]) {
int i;
printf("Se han pasado %3d argumentos:\n", argc);
for(i=0; i<argc; i++) printf("%5d- %s\n", i, argv);
return 0;
}
//**************/
Si introducimos en la linea de comandos: prueba se pasan seis, parametros, se obtiene la siguiente salida:
1- D:\ZF\LEARNC\PRUEBA.EXE
2- prueba
3- se
4- pasan
5- seis,
6- parametros
Espero hayas entendido algo, sino me preguntas y te explico algo mas detallado :D. Saludos :hola: