Resumo da programação de Unicode
Para aproveitar o suporte de tempo de execução c para Unicode e MFC, você precisará:
Definir Unicode.
Definir o símbolo Unicode antes de compilar o seu programa.
Especifique o ponto de entrada.
Sobre o saída página da pasta de vinculador do projeto Páginas de propriedades diálogo caixa, definir o símbolo de ponto de entrada wWinMainCRTStartup.
Use tipos e funções de tempo de execução portátil.
Use as funções de tempo de execução c adequadas para a manipulação de seqüência de caracteres Unicode.Você pode usar o wcs família de funções, mas você pode preferir o portátil totalmente (internacionalmente ativado) _TCHAR macros.Essas macros são prefixadas com _tcs; eles substituem, um para um, para o str da família de funções.Essas funções são descritas detalhadamente no internacionalização seção de Referência de biblioteca de tempo de execução.Para obter mais informações, consulte Mapeamentos de texto genérico em Tchar.h.
Use _TCHAR e os tipos de dados portáteis relacionados descritos suporte para Unicode.
Manipule seqüências de caracteres literais corretamente.
O compilador Visual C++ interpreta uma seqüência literal codificada como:
L"this is a literal string"
significa uma seqüência de caracteres Unicode.Você pode usar o mesmo prefixo de caracteres literais.Use o t macro para codificar seqüências de caracteres literais genericamente, portanto eles compilados como cadeias de caracteres Unicode em Unicode ou seqüências de ANSI (MBCS incluindo) sem Unicode.Por exemplo, em vez de:
pWnd->SetWindowText( "Hello" );
Use:
pWnd->SetWindowText( _T("Hello") );
Com Unicode definido, t converte a seqüência literal para o formulário de prefixo L; Caso contrário, t converte a seqüência de caracteres sem o prefixo L.
Dica O t macro é idêntica do _TEXT macro.
Cuidado passar comprimentos de seqüência de caracteres para funções.
Algumas funções deseja que o número de caracteres em uma seqüência; outros usuários desejarem que o número de bytes.Por exemplo, se Unicode é definida, a seguinte chamada para um CArchive objeto não funcionará (str é um CString):
archive.Write( str, str.GetLength( ) ); // invalid
Em um aplicativo Unicode, o comprimento oferece o número de caracteres, mas não o número correto de bytes, porque cada caractere é 2 bytes de largura.Em vez disso, você deve usar:
archive.Write( str, str.GetLength( ) * sizeof( _TCHAR ) ); // valid
que especifica o número correto de bytes a gravar.
No entanto, funções de membro MFC que são orientados a caractere, em vez de orientados a byte, trabalham sem esta codificação extra:
pDC->TextOut( str, str.GetLength( ) );
CDC::TextOutusa um número de caracteres, não um número de bytes.
Use fopen_s, _wfopen_s para abrir arquivos Unicode.
Para resumir, MFC e a biblioteca de tempo de execução fornecem o seguinte suporte para Unicode programação com o Windows 2000:
Exceto para funções de membro de classe de banco de dados, todas as funções do MFC estão habilitado para Unicode, incluindo CString.CStringtambém fornece funções de conversão Unicode/ANSI.
A biblioteca de tempo de execução fornece versões Unicode de todas as funções de manipulação de seqüência de caracteres.(Biblioteca de tempo de execução também fornece versões portáteis adequadas para Unicode ou MBCS.Esses são os _tcs macros.)
TCHAR.h fornece tipos de dados portáteis e a t macro para converter seqüências de caracteres literais e caracteres.Para obter mais informações, consulte Mapeamentos de texto genérico em Tchar.h.
A biblioteca de tempo de execução fornece uma versão de caractere largo de principal.Use wmain para tornar seu aplicativo com reconhecimento de Unicode.