Questa rigaOriginariamente inviato da stefanoB
questo era un test per capire i funzionamenti delle stringhe unicode, e txt è una variabile puntatore definita in WM_CREATE,
ma non credo sia questo perchè provandola a definire anche global stesso risultato;
si string.h è incluso come base dall'ide
ho provato con:
che lo inizializzi o meno presenta sempre lo stesso problema:codice:wchar_t *txt=NULL; wchar_t *txt;=new wchar_t*(); wsprintf(txt,L"%s",L"Managemente Unicode");
non ha nessun senso. Il codice corretto ècodice:wchar_t *txt;=new wchar_t*();
; se le dimensioni sono fisse fai anche prima a scriverecodice:wchar_t * txt = new wchar_t[256]; //alloca una stringa Unicode di 256 caratteri nell'heap //... delete[] txt;
.codice:wchar_t txt[256]; //alloca una stringa Unicode di 256 caratteri sullo stack
Ma qui non è una faccenda di Unicode, sono rudimenti di C++, queste considerazioni valgono ugualmente sia per caratteri ANSI (char) che per Unicode (wchar_t), nonché per qualunque array stile C in genere!
Anche DevC++ usa MinGW, il problema era che non mettevi le "L" davanti alle stringhe; tra l'altro forzando il cast di una stringa ANSI (char *) ad Unicode (wchar_t *) ottenevi delle stringhe Unicode potenzialmente senza senso.in primo ti ringrazio per i precedenti approfondimenti!
l'uso dei cast era dato dal fatto che anche se avevo creato un progetto test Unicode se non utilizzavo i cast non erano interpretate come stringhe unicode, questo perà lavorando in codeblock 8.02 mingw 3.4.5; in Dev non ho necessità di castare.
Se lavori solo in Unicode, usi LPWSTR ("Pointer to a null-terminated Unicode character string."). LPTSTR serve per poter compilare nei due modi differenti (ANSI e Unicode), come spiegato nel link che ti ho postato in precedenza.toglimi questo dubbio:
LPTSTR in win 32 SDK è definito così ... "Pointer to a null-terminated Windows or Unicode character string."
visto questo pensavo andasse bene !?!
Si tratta di un bug di gcc (link); prova a salvare il file come UTF8.#usando vocali accentate ... se non le uso non ho problemi
codice:wchar_t **Imenu=new wchar_t *[31]; ... Imenu[2]=L"Città"; C:\Dev-Cpp\Progetti\ManagementXpVista\Makefile.win [Build Error] n\make.exe: *** [obj/struct.o] Error 1 struct.cpp:33:47: converting to execution character set: Invalid argument
non è un carattere "strano" comunque supportato da unicode, perchè ciò che c'è che non va?

Rispondi quotando