[C con Clase] Curso WINAPI. DialogBox con texto.

marcelinux marcelinator en gmail.com
Jue Oct 19 10:13:13 CEST 2017


El pasado 2017-10-18 17:13:59, Steven Davidson escribió:

SD> Estás mezclando ASCII (CHAR o char) con Unicode (WCHAR o wchar_t). Hoy por
SD> hoy, deberías usar Unicode, por lo que aconsejo que cambies la
SD> representación del miembro, 'Texto'. Esto es,
SD> typedef struct stDatos {
SD>    WCHAR Texto[80];  // equivale a:  wchar_t Texto[80]
SD> } DATOS;
SD> Esto implica que tendrás que usar otras funciones para manipular cadenas de
SD> caracteres de tipo 'wchar_t'; por ejemplo, usa 'wcscpy()'

Perfecto. Esto lo resuelve. Gracias.

SD> Por último y para aclarar, las invocaciones que hiciste no son correctas.
SD> Escribiste:
SD> reinterpret_cast<LPWSTR>(&Datos->Texto)
SD> El tipo del miembro, 'Texto', ya es un puntero, por lo que obtendrías un
SD> doble puntero; sin embargo, esto no es lo que quieres. Gramaticalmente, la
SD> expresión correcta debería ser:
SD> reinterpret_cast<LPWSTR>(Datos->Texto)
SD> Claro está, esto no es correcto en este caso, porque la representación de
SD> caracteres usando 'char' es diferente que la de 'wchar_t'.
SD> Espero que esto aclare las dudas.

OK. Muchas gracias por la aclaración. Es que estuve "probando" diferentes alternativas y la última prueba fue ésta.



Más información sobre la lista de distribución Cconclase