Dopo innuverevoli madonne volanti nel tentare di far digerire
decentemente unicode a vb6 ho risolto sostituendo tutte le caption
con della grafica, ovviamente ho dovuto ridisegnare parte
dell'applicativo ma a conti fatti e' la soluzione migliore.
Eh, ma quanto lavoro.....anche noioso immagino :(
--
Greg
Neanche piu' di tanto... avendo il testo scritto in
madrelingua, basta "fotografare" con alt+stamp
lo schermo, poi 2 o 3 macro in fotoskiop fanno il resto.
Se l'applicazione e' "nativa" multilingua, e quindi le caption
vengono settate con codice del tipo:
Cmd_ButtonLoadNew.caption = GetString("Cmd_ButtonLoadNew")
(la funzione getstring frulla un file di testo che contiene le lingue)
Per fare la trasformazione basta che la funzione, anziche' restituire
una stringa restituisca un bitmap:
Cmd_ButtonLoadNew.picture = GetBitmap("Cmd_ButtonLoadNew")
IMHO ci vuole piu' tempo a spiegaro che a farlo... in succo :P
Avendo io avuto a che fare con i russi ho usato un
programmillo fatto da me, che dispone di un campo di testo RTF
nel qule l'utente scrive il testo che il bottone/label deve avere,
scegliendo
quindi font, dimensione, colore e cazzate varie, poi preme un bottone che
"fotografa" il testo stesso e ne salva la bitmap.
Mandando il programmillo ai russi, unitamente al file di testo sopracitato
che contiene le lingue, i russi hanno solo dovuto cliccare "next" per
tradurre bottoni e label che gia' avevo previsto in italiano, inglese e
francese, e poi mi hanno mandato la cartella risultante con le bitmap
belle e pronte :)
Devi sicuramente cambiare il charset del font di ogni controllo,
impostandogli il valore 204 (che è quello corrispondente alla codepage
1251-Russian).
Inoltre, se parti da una stringa Unicode, prima di assegnarla alla caption
di un controllo devi convertirla in ANSI (UTF-8) ma con la codepage giusta
(specificando &H419 come LocaleID).
Esempio:
Private Sub Command1_Click()
Dim sUnicode As String
Dim sAnsi As String
Label1.Font.Charset = 204
sUnicode = ChrW(1069) & ChrW(1090) & ChrW(1086) & ChrW(32) _
& ChrW(1088) & ChrW(1091) & ChrW(1089) & ChrW(1089) & ChrW(1082) &
ChrW(1086)
sAnsi = StrConv(sUnicode, vbFromUnicode, &H419)
Label1.Caption = StrConv(sAnsi, vbUnicode)
End Sub
Premendo Command1, la label presenterà la scritta "Questo è russo" in russo.
Bye
Raf
Hai provato AscW?
Bye
Raf