Função ScriptStringAnalyse (usp10.h)
Analisa uma cadeia de caracteres de texto sem formatação.
Sintaxe
HRESULT ScriptStringAnalyse(
[in] HDC hdc,
[in] const void *pString,
[in] int cString,
[in] int cGlyphs,
[in] int iCharset,
[in] DWORD dwFlags,
[in] int iReqWidth,
[in, optional] SCRIPT_CONTROL *psControl,
[in, optional] SCRIPT_STATE *psState,
[in, optional] const int *piDx,
[in, optional] SCRIPT_TABDEF *pTabdef,
[in] const BYTE *pbInClass,
[out] SCRIPT_STRING_ANALYSIS *pssa
);
Parâmetros
[in] hdc
Identificador para o contexto do dispositivo. Se dwFlags estiver definido como SSA_GLYPHS, o identificador de contexto do dispositivo será necessário. Se dwFlags estiver definido como SSA_BREAK, o identificador de contexto do dispositivo será opcional. Se o identificador de contexto do dispositivo for fornecido, a função inspecionará a fonte atual no contexto do dispositivo. Se a fonte atual for uma fonte simbólica, a função tratará a cadeia de caracteres como um único item neutro SCRIPT_UNDEFINED.
[in] pString
Ponteiro para a cadeia de caracteres a ser analisada. A cadeia de caracteres deve ter pelo menos um caractere. Pode ser uma cadeia de caracteres Unicode ou usar o conjunto de caracteres de uma página de código ANSI do Windows, conforme especificado pelo parâmetro iCharset .
[in] cString
Comprimento da cadeia de caracteres a ser analisada. O comprimento é medido em caracteres para uma cadeia de caracteres ANSI ou em caracteres largos para uma cadeia de caracteres Unicode. O comprimento deve ser pelo menos 1.
[in] cGlyphs
Tamanho do buffer de glifo, em valores word. Esse tamanho é necessário. O tamanho recomendado é (1.5 * cString + 16)
.
[in] iCharset
Descritor de conjunto de caracteres. Se a cadeia de caracteres de entrada for uma cadeia de caracteres ANSI, esse descritor será definido como o identificador do conjunto de caracteres. Se a cadeia de caracteres for uma cadeia de caracteres Unicode, esse descritor será definido como -1.
Os seguintes identificadores de conjunto de caracteres são definidos:
[in] dwFlags
Sinalizadores que indicam a análise necessária. Esse parâmetro pode ter um dos valores listados na tabela a seguir.
Valor | Significado |
---|---|
|
Recupere sinalizadores de interrupção, ou seja, paradas de caracteres e palavras. |
|
Recorte a cadeia de caracteres em iReqWidth. |
|
Forneça glifos de representação para caracteres de controle. |
|
Use fontes de fallback. |
|
Justifique a cadeia de caracteres para iReqWidth. |
|
Recupere glifos ausentes e pwLogClust com convenções GetCharacterPlacement . |
|
Gerar glifos, posições e atributos. |
|
Remova o primeiro "&" da cadeia de caracteres exibida. |
|
Substitua "&" por sublinhado no ponto de código subsequente. |
|
Exibir somente sublinhado. O padrão de bit resultante pode ser exibido, usando uma máscara XOR, para alternar a visibilidade do sublinhado de tecla de atalho sem perturbar o texto. |
|
Aplique vinculação e associação de fontes do Leste Asiático a textos não compatíveis. |
|
Escreva itens com chamadas ExtTextOutW , não com glifos. |
|
Cadeia de caracteres de entrada duplicada que contém um único caractere cString vezes. |
|
Use o nível de inserção base 1. |
|
Expanda guias. |
[in] iReqWidth
Largura necessária para ajustar ou recortar.
[in, optional] psControl
Ponteiro para uma estrutura SCRIPT_CONTROL . O aplicativo pode definir esse parâmetro como NULL para indicar que todos os membros SCRIPT_CONTROL estão definidos como 0.
[in, optional] psState
Ponteiro para uma estrutura SCRIPT_STATE . O aplicativo pode definir esse parâmetro como NULL para indicar que todos os membros SCRIPT_STATE estão definidos como 0. O membro uBidiLevel de SCRIPT_STATE é ignorado. O valor usado é derivado do sinalizador SSA_RTL em combinação com o layout do contexto do dispositivo.
[in, optional] piDx
Ponteiro para a matriz dx lógica solicitada.
[in, optional] pTabdef
Ponteiro para uma estrutura SCRIPT_TABDEF . Esse valor só será necessário se dwFlags estiver definido como SSA_TAB.
[in] pbInClass
Ponteiro para um valor BYTE que indica classificações de caracteres GetCharacterPlacement .
[out] pssa
Ponteiro para um buffer no qual essa função recupera uma estrutura SCRIPT_STRING_ANALYSIS . Essa estrutura é alocada dinamicamente no retorno bem-sucedido da função.
Retornar valor
Retorna S_OK se tiver êxito. A função retornará um valor HRESULT diferente de zero se não for bem-sucedida.
Os retornos de erro incluem:
- E_INVALIDARG. Um parâmetro inválido é encontrado.
- USP_E_SCRIPT_NOT_IN_FONT. SSA_FALLBACK não foi especificado ou uma fonte de fallback padrão está ausente.
A função também pode retornar um erro do sistema convertido em um tipo HRESULT. Um exemplo é um erro retornado devido à falta de memória ou a uma chamada GDI usando o contexto do dispositivo.
Comentários
O uso dessa função é a primeira etapa no tratamento de cadeias de caracteres de texto sem formatação. Essa cadeia de caracteres tem apenas uma fonte, um estilo, um tamanho, uma cor e assim por diante. ScriptStringAnalyse aloca buffers temporários para análises de itens, glifos, larguras avançadas e similares. Em seguida, ele executa automaticamente ScriptItemize, ScriptShape, ScriptPlace e ScriptBreak. Os resultados estão disponíveis por meio de todas as outras funções ScriptString* .
No retorno bem-sucedido dessa função, pssa indica uma estrutura alocada dinamicamente que o aplicativo pode passar sucessivamente para as outras funções ScriptString* . Em última análise, o aplicativo deve liberar a estrutura chamando ScriptStringFree.
Embora a funcionalidade de ScriptStringAnalyse possa ser implementada por chamadas diretas para outras funções, o uso da função em si reduz drasticamente a quantidade de código necessária no aplicativo para tratamento de texto sem formatação.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | usp10.h |
Biblioteca | Usp10.lib |
DLL | Usp10.dll |
Redistribuível | Internet Explorer 5 ou posterior no Windows Me/98/95 |