Share via


Método ITextRange::SetChar (tom.h)

Define o caractere na posição inicial do intervalo.

Sintaxe

HRESULT SetChar(
  long Char
);

Parâmetros

Char

Tipo: long

Novo valor para caractere na posição inicial.

Retornar valor

Tipo: HRESULT

O método retorna um valor HRESULT . Se o método for bem-sucedido, ele retornará S_OK. Se o método falhar, ele retornará um dos seguintes códigos de erro. Para obter mais informações sobre códigos de erro COM, consulte Tratamento de erros em COM.

Código de retorno Descrição
E_ACCESSDENIED
O texto é protegido por gravação.
E_OUTOFMEMORY
Sem memória.

Comentários

ITextRange::SetChar permite que você especifique o código de caractere preciso a ser usado. No entanto, literais de cadeia de caracteres com glifos semelhantes podem ser enganosos.

Os caracteres definidos por esse método são LONG em vez de um BSTR. Isso oculta a maneira como eles são armazenados no repositório de backup (como bytes, palavras, comprimento variável e assim por diante).

Frequentemente em sistemas que não têm disposição automática de palavras, os documentos têm retornos de carro rígido inseridos apenas para quebras de linha. O código a seguir mostra uma maneira simples, mas não perfeita, de converter esse carro rígido retorna para espaços em branco para a história associada ao intervalo r.

    Sub EnableWrap(r As ITextRange)   // Convert false hard CRs to soft
        r.SetRange 0, 0               // r is set at start of story
        While r.Move(tomParagraph)    // Go to start of next paragraph
            If r.MoveWhile(C1_WHITE, 1) = 0 Then    // Next char isn't white space
                r.Move tomCharacter, -1
                r.SetChar = Asc(" ")    // Replace CR by blank
            End If
        Wend        // Loop till no more CRs in story
    End Sub

Como alternativa, você pode usar o seguinte dentro do loop IF.

r.MoveStart tomCharacter, -1        // Select previous char (the CR)
r = " "        // Replace it with a blank

Essa abordagem permite encapsular o texto em outras larguras. No entanto, o algoritmo não é perfeito: ele pressupõe que um retorno de carro rígido seguido por qualquer outra coisa que não seja espaço em branco (em branco, guia, alimentação de linha, retorno de carro e assim por diante) deve ser substituído por um espaço em branco. O algoritmo também pressupõe que o caractere de retorno de carro seja um único caractere, como o retorno de carro ou o caractere de 0x2029 de fim de parágrafo Unicode (EOP). E a combinação de retorno de carro e alimentação de linha não corresponde e exigiria escrever e executar mais código (ou usar FindText(^p)). Outro cuidado é que há outros casos, como código misto e documentação, em que o algoritmo não funciona corretamente.

No entanto, ITextRange::SetChar é mais eficiente do que uma operação de substituição realizada por uma exclusão seguida por uma inserção. Portanto, reescrever o código sem usar ITextRange::SetChar provavelmente seria muito mais lento.

A propriedade Char , que pode fazer a maioria das coisas que uma coleção de caracteres pode, tem duas grandes vantagens: ela pode referenciar qualquer personagem na história pai em vez de ser limitada ao intervalo pai, e é significativamente mais rápida, já que objetos LONGem vez de intervalo estão envolvidos. Devido a essas vantagens, o TOM (Modelo de Objeto de Texto) não dá suporte a uma coleção de caracteres.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho tom.h
DLL Msftedit.dll

Confira também

Conceitual

ITextRange

Referência

Modelo de objeto de texto