Los proyectos
visuales de
Easy Code pueden generar aplicaciones ANSI o Unicode de
una manera muy fácil. Para pasar del modo ANSI a
Unicode, sólo tiene que marcar/desmarcar la
opción Este proyecto se ejecutará en
modo
Unicode (Windows NT o posterior) en las Propiedades del
proyecto.
Cuando esta opción está marcada, la
aplicación generada será Unicode,
contrariamente será ANSI
(predeterminado).
Para mantener la compatibilidad con todas las plataformas Windows,
las aplicaciones Unicode de 32 bits serán conmutadas
automáticamente a ANSI cuando se ejecuten en Windows
95/98/ME.
Por otra parte, las aplicaciones que no se generen como Unicode
(es decir, que tengan la opción Este proyecto se
ejecutará en modo Unicode desmarcada)
serán siempre
ANSI aunque se ejecuten en Windows NT o sistemas posteriores.
Para saber en que modo se está ejecutando su
aplicación, llame al método IsAppUnicode,
que devuelve
TRUE
o FALSE
dependiendo de si la aplicación se está
ejecutando como Unicode o no. De esta forma, puede preparar
una aplicación para que funcione correctamente en
todas las versiones de Windows. Para ello, sólo
debe llamar a las funciones y mensajes apropiados cuando
estén relacionados con texto, y pasar las cadenas
de texto en el formato correcto.
Easy Code también
define la constante APP_UNICODE
SOLAMENTE si
la aplicación se genera en modo Unicode. Esta
constante se define en tiempo de compilación y
también
está disponible para los proyectos visuales. Sin embargo,
si la aplicación se está ejecutando en Windows
95/98/ME,
se estará ejecutando en modo ANSI aunque la constante
APP_UNICODE
esté
definida.
Se dispone de algunas macros para trabajar con texto
ANSI/Unicode. TextStrA siempre
devuelve
una cadena de texto ANSI, TextStrW siempre
devuelve
una cadena de texto Unicode, y TextStr devuelve una
cadena
de texto ANSI o Unicode dependiendo de si la opción
Este proyecto se ejecutará en modo Unicode
está marcada o no. Además, todos los
métodos de Easy Code que trabajan con
cadenas de texto tienen sus correspondientes
versiones ANSI y Unicode.
Por ejemplo, el método SetText
se complementa con SetTextA
y SetTextW.
El método SetText
llama automáticamente a la versión ANSI o Unicode
dependiendo de
la plataforma de Windows en la que se está ejecutando y de
si la aplicación ha sido generada como
Unicode o no, mientras que SetTextA
y SetTextW
siempre llaman, respectivamente, a
la versión ANSI y Unicode del método (vea Métodos
de
Easy Code).
De esta manera puede mezclar texto ANSI y Unicode en una misma
aplicación. A continuación se muestra
algún
código de ejemplo (donde hWnd
es el "handle" del objeto al que
se desea asignar el texto):
IFDEF APP_UNICODE
Mov Eax/Rax, TextStrW("Hello") ;Modo Unicode
ELSE
Mov Eax/Rax, TextStrA("Hello") ;Modo ANSI
ENDIF
Invoke SetText, hWnd, Eax/Rax
Invoke SetTextA, hWnd, TextStrA("Hola")
Invoke IsAppUnicode
.If Eax/Rax
Invoke SetWindowTextW, hWnd, TextStrW("Hola") ;Modo Unicode
.Else
Invoke SetWindowTextA, hWnd, TextStrA("Hola") ;Modo ANSI
.EndIf
Invoke SetText, hWnd, TextStr("Hello")
Para los proyectos GoAsm tal vez desee
usar el tipo DSS
(definido por Easy Code), que hace
que una cadena sea ANSI, en proyectos ANSI, o que sea Unicode en
proyectos
Unicode.
szHola DSS 'Hola', 0
Easy Code también define la constante CHARSIZE, que tiene
el valor 1 o 2 dependiendo de
si
se está trabjando en modo ANSI o Unicode. Por
consiguiente, si necesita incrementar en un
carácter un puntero a una cadena de texto,
puede utilizar la constante CHARSIZE
de la siguiente manera: