Duda pasar de LPWSTR a char *

Iniciado por Kaxperday, 13 Noviembre 2014, 14:26 PM

0 Miembros y 2 Visitantes están viendo este tema.

Eternal Idol

Cita de: daryo en 13 Noviembre 2014, 15:36 PM
pues si toda la razon uso ansi. entonces mejor especificar
GetWindowTextA

PD: prueba
char n[60];
   GetWindowTextA(hwnd,(LPTSTR)n,60);



No hace falta en realidad, eso se hace automaticamente con los .h de Windows, al igual que el casting a LPTSTR (en ANSI es char *, no cambia nada y si lo hiciera - en el caso de que tu variable fuera de tipo wchar_t por ejemplo - seria un problema, como en el codigo de Kaxperday). No se acostumbren a poner castings por poner, usenlos cuando sea necesario.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

daryo

#11
entonces asi?
char *n;
GetWindowText(hwnd,n,60);

bueno me rindo xD
buenas

someRandomCode

#12
Cita de: daryo en 13 Noviembre 2014, 15:56 PM
entonces asi?
char *n;
GetWindowText(hwnd,n,60);

bueno me rindo xD

Nop, porque el puntero ese no tiene memoria asignada.
Para eso existe la funcion GetWindowTextLength (A y W)
Si vas a usar las funciones con ANSI y queres llamarlas como GetWindowText por ejemplo, podes poner en la cabecera un #undef UNICODE


EDIT: Edito para agregar a que me referia

Usa malloc/new/HeapAlloc/GlobalAlloc/la forma de obtener la memoria dinamica que mas te guste o bien declara un array con el tamaño suficiente para almacenar los titulos de las ventanas.
Con GetWindowTextLength(http://msdn.microsoft.com/en-us/library/windows/desktop/ms633521(v=vs.85).aspx) dado un HWND te dice cuantos caracteres tiene el titulo, a eso le sumas uno para el '\0' (caracter terminador).
Despues si llamas tranquilamente a GetWindowText

Eternal Idol

Cita de: daryo en 13 Noviembre 2014, 15:56 PM
entonces asi?
char *n;
GetWindowText(hwnd,n,60);

bueno me rindo xD

No  ;D El anterior estaba bien, solo que el casting era redundante.

someRandomCode: mejor configurar el proyecto en el IDE para no tener que "desdefinir" nada.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

daryo

Cita de: Eternal Idol en 13 Noviembre 2014, 16:06 PM
No  ;D El anterior estaba bien, solo que el casting era redundante.

someRandomCode: mejor configurar el proyecto en el IDE para no tener que "desdefinir" nada.
a bueno gracias ya entendi xD
si fuera mi posts le pondria chulo
buenas

someRandomCode

Cita de: Eternal Idol en 13 Noviembre 2014, 16:06 PM
No  ;D El anterior estaba bien, solo que el casting era redundante.

someRandomCode: mejor configurar el proyecto en el IDE para no tener que "desdefinir" nada.

Es que uso Sublime Text e invoco MSVC o Mingw-w64 desde la terminal porque sino me parece que se me pasan de largo algunas cositas.. Algunos IDE pasan por defecto -fpermissive (dev-cpp) que es mala idea jeje, porque no te avisa de algunas cosas por ejemplo con los punteros a funciones y la convencion con la que llamarla..
PD: Te debo una cervecita por la ayuda del otro dia :)