WideCharToMultiByte
9/8/2008
Essa função mapeia um todo-seqüência de caracteres para um novo seqüência de caracteres. O novo seqüência de caracteres não é necessariamente de um multibyte conjunto de caracteres.
Syntax
int WideCharToMultiByte(
UINT CodePage,
DWORD dwFlags,
LPCWSTR lpWideCharStr,
int cchWideChar,
LPSTR lpMultiByteStr,
int cbMultiByte,
LPCSTR lpDefaultChar,
LPBOOL lpUsedDefaultChar
);
Parameters
Codepage
[no] Página de código usada para executar a conversão.Você pode definir esse parâmetro para qualquer página de código que está instalado ou disponível no sistema. Você também pode especificar um dos valores mostrados na seguinte tabela.
Valor Descrição CP_ACP
Página de código ANSI
CP_MACCP
Não suportado
CP_OEMCP
Página de código OEM
CP_SYMBOL
Não suportado
CP_THREAD_ACP
Não suportado
CP_UTF7
Página de código UTF-7
CP_UTF8
Página de código UTF-8
Quando SYSGEN_LOCUSA é definida, somente as páginas codificar 1252 e 437 são com suporte.
Para criar uma imagem que tenha muito limitado suporte localidade, especificar a imagem com SYSGEN_CORELOC e pôr as localidades necessárias para a imagem em Public\Common\Oak\Files\Nlscfg.inf.
dwFlags
[no] Tratamento de desmapeado de caracteres. A função executa mais rapidamente quando nenhuma desses sinalizadores está definida.As constantes sinalizador descritas a seguinte tabela.
Valor Descrição WC_COMPOSITECHECK
Converter composição caracteres para caracteres precomposed.
WC_DEFAULTCHAR
Substitua exceções o caractere usar como padrão durante conversão.
WC_DISCARDNS
Descarte caracteres nonspacing durante conversão.
WC_SEPCHARS
Gerar separar caracteres durante conversão.
Esse é o comportamento conversão usar como padrão.
Quando WC_COMPOSITECHECK for especificada, a função converte composição caracteres para caracteres precomposed.
Uma composição caractere consiste em um caractere de base e um caractere nonspacing, cada um com valores diferentes caractere.
Um caractere precomposed tem um valor para uma combinação caractere base/nonspacing caractere único. Em è o caractere, o e é o caractere de base e a marca circunflexo acentuação é o caractere nonspacing.
Quando um aplicativo especifica WC_COMPOSITECHECK, ele pode usar os sinalizadores três últimos nessa lista (WC_DISCARDNS, WC_SEPCHARS e WC_DEFAULTCHAR) para personalizar a conversão para caracteres precomposed.
Esses sinalizadores determinam o comportamento da função quando não houver nenhum mapeamento precomposed para uma combinação caractere base/nonspace em um todo-seqüência de caracteres.
Esses sinalizadores três últimos só podem ser usados se o sinalizador WC_COMPOSITECHECK for definida.
Usar como padrão comportamento a função é gerar separar caracteres (WC_SEPCHARS) para desmapeado composição caracteres.
- lpWideCharStr
[no] Ponteiro para o toda-seqüência de caracteres a ser convertido.
- cchWideChar
[no] Número de Unicode (16-bit) caracteres o seqüência de caracteres apontado pelo lpWideCharStr parâmetro. Se esse valor é – 1, o seqüência de caracteres será considerado terminada por caractere nulo e o comprimento é calculado automaticamente.
- lpMultiByteStr
[out] Ponteiro para a reserva para receber o seqüência de caracteres convertida.
- cbMultiByte
[no] Tamanho, em bytes, da reserva apontado pelo lpMultiByteStr parâmetro. Se esse valor for zero, a função retornará o número de bytes exigido para a reserva. (Neste maiúsculas e minúsculas, o lpMultiByteStr reserva não é usada.)
lpDefaultChar
[no] Ponteiro para o caractere usado se uma caractere largo não pode ser representada na página de código especificado. Se este parâmetro é NULL, um valor usar como padrão sistema é usado.A função é mais rápido quando ambos lpDefaultChar e lpUsedDefaultChar são NULL.
lpUsedDefaultChar
[in, Out] Ponteiro para um sinalizador que indica se um caractere usar como padrão foi usado.O sinalizador for definido como TRUE se um ou mais caracteres de largura no seqüência de caracteres de origem não podem ser representados na página de código especificado. Caso contrário, o sinalizador é definido como FALSE.
Este parâmetro pode ser NULL.
A função é mais rápido quando ambos lpDefaultChar e lpUsedDefaultChar são NULL.
Return Value
O número de bytes gravados para a reserva apontado pelo lpMultiByteStr Indica se o sucesso cbMultiByte é diferente de zero.
O exigido tamanho, em bytes, de uma reserva que possa receber o seqüência de caracteres traduzido indica êxito se cbMultiByte For zero.
Zero indica falha. Para informações de erro estendidas get, chamar GetLastError. Valores possíveis para GetLastError Incluir o seguinte:
- ERROR_INSUFFICIENT_BUFFER
- ERROR_INVALID_FLAGS
- ERROR_INVALID_PARAMETER
Remarks
Se a pasta lpMultiByteStr e lpWideCharStr Os ponteiros são os mesmos, o função falhar, e GetLastError Retorna ERROR_INVALID_PARAMETER. Um aplicativo pode usar o lpDefaultChar parâmetro para alteração de caractere usar como padrão usado para a conversão.
WideCharToMultiByte Opera mais eficiente quando ambos lpDefaultChar e lpUsedDefaultChar são NULL. O comportamento do WideCharToMultiByte Para as quatro combinações de lpDefaultChar e lpUsedDefaultChar é mostrada na seguinte tabela.
lpDefaultChar | lpUsedDefaultChar | Resultado |
---|---|---|
NULL |
NULL |
Nenhuma verificação usar como padrão. Este é o mais eficiente, rápido maneira de usar essa função. |
Não-NULL |
NULL |
Usa o caractere especificado usar como padrão, mas não definir lpUsedDefaultChar. |
NULL |
Não-NULL |
Usa o caractere usar como padrão sistema e define lpUsedDefaultChar se necessário. |
Não-NULL |
Não-NULL |
Usa o caractere usar como padrão especificado e define lpUsedDefaultChar se necessário. |
Requirements
Header | winnls.h |
Library | coredll.lib |
Windows Embedded CE | Windows CE 1.01 and later |
Windows Mobile | Windows Mobile Version 5.0 and later |