Domanda

Sto creando un'applicazione M ++ C ++ con " Usa set di caratteri Unicode " selezionato in Visual Studio. Ho UNICODE definito, le mie stringhe CS sono a 16 bit, gestisco nomi di file con caratteri giapponesi, ecc. Ma, quando inserisco stringhe Unicode contenenti caratteri giapponesi in un CComboBox (usando AddString), vengono visualizzate come ????? .

Uso Windows XP Professional x64 (in inglese). Se uso il Pannello di controllo di Windows Opzioni internazionali e della lingua, la scheda Avanzate e imposto la lingua per i programmi non Unicode su giapponese, la mia casella combinata sembra corretta.

Quindi, voglio che la mia casella combinata appaia corretta e voglio capire perché la "Lingua per programmi non Unicode" l'impostazione sta cambiando il comportamento del mio programma Unicode. C'è qualcos'altro che dovrei fare per dire a Windows che la mia applicazione è un'applicazione Unicode?

Grazie per l'aiuto!

È stato utile?

Soluzione

Windows conosce la differenza tra i programmi Unicode e non Unicode in base alle funzioni che chiamano. La maggior parte delle funzioni dell'API di Windows è disponibile in due varianti, una che termina con A per non Unicode e una che termina con W per Unicode. I file include che definiscono queste funzioni utilizzeranno le impostazioni del compilatore per scegliere automaticamente l'una o l'altra.

I caratteri potrebbero non essere visualizzati correttamente perché hai selezionato un carattere che non li include come carattere predefinito dell'interfaccia utente.

Altri suggerimenti

Da dove prendi le corde? Se sono codificati nelle fonti C, nel momento in cui chiami AddString sono (molto probabilmente) già danneggiati.

Nulla impedisce a qualcuno di prendere una stringa Unicode, " squeeze " ad esempio in una stringa std :: string e danneggiarlo. Anche se le applicazioni sono compilate come Unicode.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top