necesito si me podeis detallar el significado de dos lineas de codigo que no consigo entender
1.
__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.std::string str;
en esta segunda linea, no he conseguido encontrar en google el significado de los :: al declarar una variable.
3.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
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:
#include <iostream>
std::cout << "hola mundo" << std::endl;
__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
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 (http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx)