Compartilhar via


Resumo de programação de Unicode

Para usufruir o MFC e C em time de execução oferecem suporte para Unicode, você precisa:

  • Definir _UNICODE.

    Definir o símbolo _UNICODE antes de criar seu programa.

  • Especifique o ponto de entrada.

    Sobre o Saída página de da pasta vinculador do projeto Páginas de propriedades caixa de diálogo, defina o símbolo de ponto de entrada como wWinMainCRTStartup.

  • Uso portátil em time de execução funções e tipos.

    Usar o C adequado em time de execução funções de manipulação de seqüência de caracteres Unicode.Você pode usar o WCS família de funções, mas você pode preferir o totalmente portátil (internacionalmente ativado) _TCHAR macros.Essas macros são prefixadas com _tcs; elas os substituem por, um para um, a STR família de funções.Essas funções são descritas detalhadamente no Internacionalização o seçãoReferência da biblioteca de time de execução.Para obter mais informações, consulte Mapeamentos de texto genérica na tchar.h.

    Use _TCHAR e os tipos de dados portátil relacionados descritos em Suporte a Unicode.

  • Manipule seqüências de caracteres literal corretamente.

    O compilador do Visual C++ interpreta uma seqüência de caracteres literal codificada sistema autônomo:

    L"this is a literal string"
    

    para se referir a uma seqüência de caracteres Unicode.Você pode usar o mesmo prefixo para caracteres literal.Use o _T macro codificar seqüências de caracteres literal genericamente, para que eles compilados sistema autônomo cadeias de caracteres Unicode em Unicode ou ANSI seqüências (incluindo MBCS) sem Unicode.Por exemplo, em vez de:

    pWnd->SetWindowText( "Hello" );
    

    use:

    pWnd->SetWindowText( _T("Hello") );
    

    Com _UNICODE defined, _T converte a seqüência literal para o formulário como prefixo L; caso contrário, _T converte a seqüência de caracteres sem o prefixo L.

    Dica:

    O _T é idêntica ao macro_TEXT macro.

  • Tenha cuidado ao passar comprimentos de seqüência de caracteres para funções.

    Algumas funções deseja que o número de caracteres em uma seqüência de caracteres; outros usuários o número de bytes.Por exemplo, se _UNICODE é definida, o seguinte plano de um CArchive objeto não funcionará)str é um CString):

    archive.Write( str, str.GetLength( ) );    // invalid
    

    Em um aplicativo Unicode, o comprimento lhe o número de caracteres, mas não o número correto de bytes, porque cada caractere é de 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, MFC funções de membro que são orientados por caractere, em vez de orientada a byte, funcionam sem essa codificação extra:

    pDC->TextOut( str, str.GetLength( ) );
    

    CDC::TextOut usa um número de caracteres, não é um número de bytes.

  • Use fopen_s, _wfopen_s Para em em aberto arquivos Unicode.

Para resumir, MFC e o em time de execução biblioteca fornecem o seguinte suporte para programação em Unicode no Windows 2000:

  • Exceto para funções de membro de classe do banco de dados, todas as funções MFC estão ativados para o Unicode, incluindo CString. CString também fornece funções de conversão Unicode/ANSI.

  • O em time de execução biblioteca fornece versões Unicode de todas as funções de manipulação de seqüência de caracteres.(O em time de execução biblioteca também fornece versões portátil adequadas para Unicode ou MBCS.Estes são o _tcs macros.)

  • Tchar.h fornece tipos de dados portáteis e a _T macro para converter seqüências de caracteres literal e caracteres.Para obter mais informações, consulte Mapeamentos de texto genérica na tchar.h.

  • A biblioteca de time de execução fornece uma versão de caractere largo de principal.Use wmain para tornar seu aplicativo com reconhecimento de Unicode.

Consulte também

Conceitos

Suporte a Unicode