Pergunta

Estou construindo uma aplicação MFC C ++ com o "conjunto de caracteres Unicode Use" selecionado no Visual Studio. Tenho UNICODE definido, meus CStrings são de 16 bits, eu lidar com nomes de arquivos com caracteres japoneses neles, etc. Mas, quando eu coloco cadeias de caracteres Unicode que contém caracteres japoneses em um CComboBox (usando AddString), eles aparecem como ????? .

Estou executando o Windows XP Professional x64 (em Inglês). Se eu usar o Painel de Controle do Windows Opções regionais e de idioma, guia Avançado e defina o idioma para programas não-Unicode para japonês, minha caixa de combinação parece certo.

Então, eu quero minha caixa de combinação para olhar direito, e eu quero entender por que o "Idioma para programas não-Unicode" cenário está mudando o comportamento do meu programa de Unicode. Há outra coisa que eu deveria fazer para dizer ao Windows meu aplicativo é um aplicativo Unicode?

Obrigado por qualquer ajuda!

Foi útil?

Solução

Windows sabe a diferença entre Unicode e programas não-Unicode pelas funções que eles chamam. A maioria das funções da API do Windows virá em duas variantes, uma terminando em um para não-Unicode e um terminando em W para Unicode. A incluem arquivos que definem essas funções vai usar as configurações do compilador para escolher um ou outro para você automaticamente.

Os personagens podem não estar saindo corretamente porque você selecionou uma fonte que não inclui-los para ser sua fonte da IU padrão.

Outras dicas

De onde você tira as cordas de? Se eles são codificados em suas fontes de C, em seguida, no momento em que você chama AddString eles estão (muito provavelmente) já danificados.

Nada impede de tomar alguma seqüência de caracteres Unicode, "espremer"-lo em um std :: string, por exemplo, e danificá-lo. Mesmo que as aplicações é compilado como Unicode.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top