Hola que tal? veran necesito cojer el texto de un boton mediante las API de windows con Borland C++,yo lo e echo asin:
//* Boton*//
HWND Ventana = FindWindow(0,"Form1");
void *Boton = FindWindowEx(Ventana,0,"Button",0);
char *text;
GetWindowText(Boton,text,sizeof(text));
MessageBox(0,text,0,0);
pero me muestra texto muy raro no me muestra el texto me muestra caracteres muy raros,que es lo que pasa?
saludos
Debe ser porque a la variable text no le asignas espacio de memoria :P
Ver malloc o alloc
Salu10.
a...vaya pues en otros IDEs no hacia falta usar malloc :S ya se solucionó el problema,hice lo siguiente:
char *Text = (char*)malloc(1000);
eso me funciono pero no sabia que se tenia que hacer asin puesto que con Dev-Cpp no hacia falta :S
muchas gracias!
Es raro que en Dev-Cpp no lo hayas tenido que hacer :¬¬
Igual para que te quede mas prolijo...
char *text = malloc( 1000 * sizeof( char ) );
No es necesario hacer el casting, ya que malloc devuelve algo de tipo void*
No te olvides de luego llamar a la funcion free() para liberar esa memoria pedida.
Salu10.
ok gracias si lo del free ya lo sabia,ya lo hice muchas gracias
Juanma_faust, de nada!
Salu10.
Si estas utilizando WINAPI siempre es recomendable utilizar los tipos de datos que están declarados en ella, como por ejemplo HWND, HANDLE, etc. De esta forma el código puede comprenderse mejor, por mas que void* técnicamente este ""bien"".
Por otro lado ten en cuenta que al reservar memoria dinámica, sizeof no te devuelve el tamaño reservado sino el tamaño del tipo de dato (Es decir, un puntero, 4 bytes) por lo tanto cualquier texto que supere los 4 bytes sera truncado cuando GetWindowText lo copie al buffer (text).
Y en la medida de lo posible utiliza otro entorno de trabajo que tanto Devcpp como Borland están obsoletos.
Saludos