metodo

Iniciado por Pirat3net, 1 Mayo 2013, 23:31 PM

0 Miembros y 1 Visitante están viendo este tema.

Pirat3net

necesito si me podeis detallar el significado de dos lineas de codigo que no consigo entender

1.
Código (cpp) [Seleccionar]
__declspec(dllexport) LRESULT CALLBACK handlekeys(int code, WPARAM wp, LPARAM lp)//entra code , wp, lp
{contenito...}

por lo que puedo entender es un metodo llamado __declspe, el parametro dllexport no lo entiendo bien , pues no especifica que tipo de variable es(string , int...)  LRESULT CALLBACK no estoy seguro, porque lo mio es mas java, pero supongo que aqui se le pueden dar propiedades al terminar de declarar un metodo, el handlekeys() si que pude encontrar bastante informacion sobre el googleando, pero agradeceria expliquen lo anterior. gracias



2.
Código (cpp) [Seleccionar]
std::string str;
en esta segunda linea, no he conseguido encontrar en google el significado de los :: al declarar una variable.


3.
Código (cpp) [Seleccionar]
KBDLLHOOKSTRUCT st_hook = *((KBDLLHOOKSTRUCT*)lp);
por ultimo, la declaracion de esta tercera variable me desconcierta mucho, sobre todo el tema de los asteriscos y no consigo entender que es KBDLLHOOKSTRUCT



gracias

pacoperico

La segunda duda te la puedo resolver facilmente. Los :: es el operador de resolucion de ambito, se utiliza para acceder a distintos metodos, miembros u objetos de un espacio de nombres o una clase.

Por ejemplo tenemos la libreria iostream, dentro de ella existe un espacio de nombres llamado std y dentro de este espacio de nombres tenemos el objeto cout que no es ni mas ni menos que la salida por pantalla.

Para poder usar el objeto cout y crearnos nuestro "hola mundo" tenemos que especificar que queremos usar el objeto cout que se encuentra en el espacio de nombres std:

Código (cpp) [Seleccionar]
#include <iostream>
std::cout << "hola mundo" << std::endl;

85

#2
__declspec(dllexport)  lo que hace es marcar una función o una clase o un miembro de una clase , para que sean identificados como símbolos exportados.
http://msdn.microsoft.com/es-AR/library/a90k134d(v=vs.80).aspx

necesitarías leer sobre vinculación dinámica, vinculación estática, EAT, IAT, import binding, imports, exports, DLLs, GetProcAddress y muchos temas relacionados.


LRESULT

y

CALLBACK

son definiciones propias de Windows. definiciones de tipos de datos.

lo mismo con WPARAM y LPARAM
Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/

flony

#3
KBDLLHOOKSTRUCT st_hook = *((KBDLLHOOKSTRUCT*)lp);
parece una typedef struct llamada st_hook a la cual apunta a una parametro que se llama lp
http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx
si un problema no tiene solucion entonces no es un problema...es algo inevitable