Estoy usando Code::Blocks y no entiendo como hacer para trabajar con cadenas unicode, me tira errores, en todo, no entiendo como funciona...
Por ejemplo, esta función trabaja correctamente:
Código
Pero esta no!!:
MessageBoxA(0, "Texto", "Título", MB_OK | MB_ICONINFORMATION);
Código
Mis preguntas mas concretas serían:
MessageBoxW(0, "Texto", "Título", MB_OK | MB_ICONINFORMATION); /* MessageBoxW(0, L"Texto", "Título", MB_OK | MB_ICONINFORMATION); */
1) ¿Por que pasa esto?, ¿cual es el problema?, ¿para que sirve la 'L', por ejemplo: 'L"string"'.
2) ¿como declaro y uso una variable de tipo LPWSTR?
3) ¿por que Code::Blocks usa Ansi por defecto (o tal vez tiene que ver el compilador)?, ¿por que no se muestra el texto que contiene caracteres, por ejemplo, acentuados (hablo del uso de, por ejemplo, con 'cout')?. He intentado usar SetConsoleOutputCP() entre otras cosas, y no parece tener ningún efecto, lo único que me ha servido es usar:
Código
Pero parece interferir con otras cosas, no es lo que busco, creo.
_setmode(_fileno(stdout), 0x20000); // _O_U16TEXT = 0x20000 _setmode(_fileno(stdin), 0x20000); // _O_U16TEXT = 0x20000
4) ¿cual es la diferencia entre wchar_t, char32_t, WCHAR, TCHAR?, ¿cual debo usar?.
5) ¿debo tener en cuenta algo al ejecutar mi programa en otra versión de Windows (sobre este tema)?.
6) ¿como convierto entre una página de códigos a otra?, ¿cual me recomiendan usar y como?.
Gracias!