• Martes 14 de Mayo de 2024, 03:11

Autor Tema:  codeblocks y Unicode  (Leído 2234 veces)

maxstepin

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
codeblocks y Unicode
« en: Martes 20 de Octubre de 2009, 22:05 »
0
hola.
el siguiente codigo:
Código: C
  1. int WINAPI WinMain(HINSTANCE actual,
  2.                     HINSTANCE previa,
  3.                     LPSTR parametros,
  4.                     int cmd)
  5. {
  6.     MessageBoxA(NULL, "ascii", NULL, 0);
  7.     MessageBoxW(NULL, L"unicode", NULL, 0);
  8.     MessageBox(NULL, "cual", NULL,0);
  9. }
  10.  

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
  1. #define UNICODE
  2.  
al principio del fichero? yo ya lo he probado y no funciona.
gracias adelantadas

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: codeblocks y Unicode
« Respuesta #1 en: Martes 20 de Octubre de 2009, 23:11 »
0
Los #define tienen que estar antes del #include de windows.h para que funcione.

Código: C++
  1. #define UNICODE
  2. #define _UNICODE
  3.  
  4. #include <windows.h>
  5. #include <tchar.h>
  6.  
  7. int WINAPI WinMain(HINSTANCE actual,
  8.                     HINSTANCE previa,
  9.                     LPSTR parametros,
  10.                     int cmd)
  11. {
  12.     MessageBox(NULL, _T("cual"), NULL,0);
  13. }
  14.  

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

maxstepin

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: codeblocks y Unicode
« Respuesta #2 en: Miércoles 21 de Octubre de 2009, 22:50 »
0
Eternal Idol, funciono! gracias por la ayuda, rapida y concisa. Porque tiene que estar delante de el include? :mellow:

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: codeblocks y Unicode
« Respuesta #3 en: Miércoles 21 de Octubre de 2009, 23:15 »
0
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++
  1. WINUSERAPI
  2. int
  3. WINAPI
  4. MessageBoxA(
  5.     __in_opt HWND hWnd,
  6.     __in_opt LPCSTR lpText,
  7.     __in_opt LPCSTR lpCaption,
  8.     __in UINT uType);
  9. WINUSERAPI
  10. int
  11. WINAPI
  12. MessageBoxW(
  13.     __in_opt HWND hWnd,
  14.     __in_opt LPCWSTR lpText,
  15.     __in_opt LPCWSTR lpCaption,
  16.     __in UINT uType);
  17. #ifdef UNICODE
  18. #define MessageBox  MessageBoxW
  19. #else
  20. #define MessageBox  MessageBoxA
  21. #endif // !UNICODE
  22.  

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

maxstepin

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: codeblocks y Unicode
« Respuesta #4 en: Jueves 22 de Octubre de 2009, 19:06 »
0
OK, gracias. Nunca te acostaras sin saber una cosa mas. :lol: