Programación General > C/C++

 codeblocks y Unicode

(1/1)

maxstepin:
hola.
el siguiente codigo:

--- Código: C ---int WINAPI WinMain(HINSTANCE actual,                    HINSTANCE previa,                    LPSTR parametros,                    int cmd){    MessageBoxA(NULL, "ascii", NULL, 0);    MessageBoxW(NULL, L"unicode", NULL, 0);    MessageBox(NULL, "cual", NULL,0);} 
lo he probado bajo vc++ sin problemas, puedo cambiar la configuracion del proyecto para multibyte o unicode para poder especificar una cosa u otra.
Pero, en codeblocks no encuentro tal opcion. Donde puedo configurar codeblocks para que el programa salga unicode?
no sera poniendo:

--- Código: C ---#define UNICODE al principio del fichero? yo ya lo he probado y no funciona.
gracias adelantadas

Eternal Idol:
Los #define tienen que estar antes del #include de windows.h para que funcione.


--- Código: C++ ---#define UNICODE#define _UNICODE #include <windows.h>#include <tchar.h> int WINAPI WinMain(HINSTANCE actual,                    HINSTANCE previa,                    LPSTR parametros,                    int cmd){    MessageBox(NULL, _T("cual"), NULL,0);} 

maxstepin:
Eternal Idol, funciono! gracias por la ayuda, rapida y concisa. Porque tiene que estar delante de el include? :mellow:

Eternal Idol:
De nadas  :comp:

Las funciones de la API estan declaradas en windows.h (o en alguna otra cabecera que esta incluya directa o indirectamente), por ejemplo MessageBox sera MessageBoxA sino esta definido UNICODE/_UNICODE y MessageBoxW si lo esta. Extracto del SDK:


--- Código: C++ ---WINUSERAPIintWINAPIMessageBoxA(    __in_opt HWND hWnd,    __in_opt LPCSTR lpText,    __in_opt LPCSTR lpCaption,    __in UINT uType);WINUSERAPIintWINAPIMessageBoxW(    __in_opt HWND hWnd,    __in_opt LPCWSTR lpText,    __in_opt LPCWSTR lpCaption,    __in UINT uType);#ifdef UNICODE#define MessageBox  MessageBoxW#else#define MessageBox  MessageBoxA#endif // !UNICODE 

maxstepin:
OK, gracias. Nunca te acostaras sin saber una cosa mas. :lol:

Navegación

[0] Índice de Mensajes

Ir a la versión completa