Aplicacions ANSI / Unicode (només projectes visuals)
Des de la
versió 1.04.0.0001
els projectes visuals
de l'Easy Code Masm
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ó Genera
el projecte com a 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 Windows, les
aplicacions
Unicode generades amb el mode visual de l'Easy
Code Masm seran commutades
dinàmicament
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ó Genera
el projecte com a Unicode
desmarcada) seran sempre ANSI tot i que s'executin en Windows NT o
sistemes posteriors. Per tal que pogueu saber com s'està
executant
una aplicació, l'Easy Code defineix la constant APP_UNICODE
NOMÉS si
l'aplicació s'està executant en mode Unicode.
Si ho
preferiu, també podeu cridar 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 en el format correcte.
AVÍS: Tota aquesta funcionalitat
només s'aplica
als projectes visuals. Tantmateix, la constant APP_UNICODE
també es pot utilitzar
als projectes clàssics marcant o desmarcant aquesta
opció.
Per tal de donar suport a aquest nou format, s'ha incorporat la nova
macro per a textos Unicode TextAddrW,
i des de la versió
1.05.0.0002
s'inclou la macro TextStr,
que torna automàticament el text en format ANSI o Unicode en
funció de si l'opció Genera
el projecte com a Unicode (Windows NT o posterior)
està marcada o no. A més, tots els
mètodes de l'Easy
Code Masm que utilitzen
cadenes de text han estat millorats afegint-hi les seves corresponents
versions ANSI i Unicode.
Per exemple, el mètode SetText
ha estat
complementat 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 Masm).
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, TextAddrW("Hello") ;Mode Unicode
ELSE
Mov Eax, TextAddr("Hello") ;Mode ANSI
ENDIF
Invoke SetText, hWnd, Eax
Invoke SetTextA, hWnd, TextAddr("Hola")
Invoke IsAppUnicode
.If Eax
Invoke SetWindowTextW, hWnd, TextAddrW("Hola") ;Mode Unicode
.Else
Invoke SetWindowTextA, hWnd, TextAddr("Hola") ;Mode ANSI
.EndIf
Invoke IsAppUnicode
.If Eax
Mov Edx, TextAddrW("Hola") ;Mode Unicode
Mov Eax, SetWindowTextW
.Else
Mov Edx, TextAddr("Hola") ;Mode ANSI
Mov Eax, SetWindowTextA
.EndIf
Push Edx
Push hWnd
Call Eax
Mov Eax, TextStr("Hello")
Invoke SetText, hWnd, Eax
AVÍS:
Com s'ha dit anteriorment, tots els
noms de fitxers i carpetes relacionats amb els projectes es tracten sempre
com a text ANSI. Quan l'Easy Code s'executa en mode Unicode
(és a dir, en
Windows NT o posterior), el quadre de diàleg per obrir i
desar
fitxers també és una
finestra Unicode. Tot i així, un cop s'ha seleccionat un
fitxer, el seu nom i
la seva ruta ("path") es converteixen sempre a ANSI per motius de
compatibilitat, per
tant, tingueu present aquesta qüestió a l'hora de
seleccionar
carpetes o posar nom als objectes i fitxers dels vostres
projectes.
OBSERVACIONS: Tot i que els noms dels projectes, les fonts, les finestres i els controls són sempre noms ANSI, els mètodes que llegeixin o escriuen aquests noms (p.e. GetFontName i SetFontName) esperen i retornen cadenes Unicode si l'aplicació s'està executant com a Unicode. D'altra banda, quan crideu el mètode Create per tal de crear una finestra, podeu passar-li el seu nom (primer paràmetre) tant amb una cadena ANSI, com amb una cadena Unicode.
IMPORTANT:
L'editor
de codi
SEMPRE
treballa en mode ANSI i SEMPRE
necessita una font ANSI d'amplada fixa ("fixed-pitch")
per tal de funcionar correctament.