Els projectes
visuals de
l'Easy Code poden generar aplicacions ANSI o Unicode
d'una manera molt fàcil. Per passar del mode
ANSI a l'Unicode, només heu de marcar/desmarcar
l'opció Aquest projecte s'executarà en
mode
Unicode (Windows NT o posterior) a les Propietats del projecte. Quan aquesta opció
està
marcada, l'aplicació generada serà
Unicode, altrament serà ANSI
(predeterminat).
Per mantenir la compatibilitat amb totes les plataformes del
Windows, les aplicacions Unicode de 32 bits seran commutades
automàticament a ANSI quan s'executin en Windows
95/98/ME. D'altra banda, les aplicacions que no es generin
com a Unicode (és a dir, que tinguin l'opció
Aquest projecte s'executarà en mode Unicode
desmarcada) seran sempre ANSI, tot i que s'executin en
Windows NT o sistemes posteriors. Per tal de saber en
quin mode s'està executant la vostra aplicació,
crideu el mètode IsAppUnicode,
que torna TRUE
o FALSE
depenent de si l'aplicació s'està executant
com a Unicode o no. D'aquesta manera, podeu preparar una
aplicació per tal que funcioni correctament a totes
les versions del Windows. Per a fer-ho, només cal
que crideu les funcions i missatges apropiats quan estiguin
relacionats amb text, i que passeu les cadenes de text en el
format correcte.
L'Easy Code també defineix la constant
APP_UNICODE
NOMÉS
si l'aplicació es genera en mode Unicode. Aquesta
constant es defineix en temps de compilació i
també està
disponible per als projectes visuals. Tantmatex, si
l'aplicació s'està executant en Windows 95/98/ME,
s'estarà
executant en mode ANSI encara que la constant APP_UNICODE
estigui
definida.
Es disposa d'algunes macros per treballar amb text
ANSI/Unicode. TextStrA sempre
torna
una cadena de text ANSI, TextStrW sempre
torna
una cadena de text Unicode, i TextStr torna una
cadena
de text ANSI o Unicode depenent de si l'opció
Aquest projecte s'executarà en mode Unicode
està marcada o no. A més, tots els
mètodes de l'Easy
Code que treballen amb
cadenes de text tenen les seves corresponents
versions ANSI i Unicode.
Per exemple, el mètode SetText es
complementa amb
SetTextA
i SetTextW.
El mètode SetText
crida automàticament la versió ANSI o Unicode
depenent de la
plataforma de Windows en la que s'està executant i de si
l'aplicació ha estat generada com a Unicode o
no, mentre que SetTextA
i SetTextW
sempre criden, respectivament, la
versió ANSI i Unicode del mètode (vegeu Mètodes
de
l'Easy Code).
D'aquesta manera podeu barrejar text ANSI i Unicode en una mateixa
aplicació. Tot seguit es mostra algun codi d'exemple (on
hWnd
és el "handle" de l'objecte al que es vol
assignar el text):
IFDEF APP_UNICODE
Mov Eax/Rax, TextStrW("Hello") ;Mode Unicode
ELSE
Mov Eax/Rax, TextStrA("Hello") ;Mode ANSI
ENDIF
Invoke SetText, hWnd, Eax/Rax
Invoke SetTextA, hWnd, TextStrA("Hola")
Invoke IsAppUnicode
.If Eax/Rax
Invoke SetWindowTextW, hWnd, TextStrW("Hola") ;Mode Unicode
.Else
Invoke SetWindowTextA, hWnd, TextStrA("Hola") ;Mode ANSI
.EndIf
Invoke SetText, hWnd, TextStr("Hello")
Per als projectes GoAsm potser voldreu
fer servir el tipus DSS
(definit per l'Easy Code),
que fa que una cadena sigui ANSI, en projectes ANSI, o que sigui
Unicode en projectes
Unicode.
szHola DSS 'Hola', 0
L'Easy Code també defineix la constant CHARSIZE, que
té el
valor 1 o 2 depenent de si
s'està
treballant en mode ANSI o Unicode. Per tant, si
necessiteu incrementar en un caràcter un punter
a una cadena de text, podeu fer servir la
constant CHARSIZE
de la següent manera: