Compartilhar via


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

Move o ponto de inserção para frente ou para trás um número especificado de unidades. Se o intervalo não for indegenerado, o intervalo será recolhido para um ponto de inserção em ambas as extremidades, dependendo da Contagem e, em seguida, será movido.

Sintaxe

HRESULT Move(
  long Unit,
  long Count,
  long *pDelta
);

Parâmetros

Unit

Tipo: long

Unidade a ser usada. O valor padrão é tomCharacter. Para obter informações sobre outros valores, consulte a discussão em ITextRange.

Count

Tipo: long

Número de Unidadespara passar. O valor padrão é 1. Se Count for maior que zero, o movimento será encaminhado para o final da história e, se Count for menor que zero, o movimento será para trás em direção ao início. Se Count for zero, o intervalo será inalterado.

pDelta

Tipo: long*

O número real de Unidadesem que o ponto de inserção passa. O ponteiro pode ser NULL. Para obter mais informações, consulte a seção Comentários.

Retornar valor

Tipo: HRESULT

O método retorna um valor HRESULT . Se o método conseguir mover o ponto de inserção, 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_NOTIMPL
Não há suporte para a unidade.
S_FALSE
Falha por algum outro motivo.

Comentários

Se o intervalo for degenerado (um ponto de inserção), esse método tentará mover as Unidadesde Contagem do ponto de inserção.

Se o intervalo não for inferior e Count for maior que zero, esse método recolherá o intervalo na posição do caractere final, moverá o ponto de inserção resultante para um limite de Unidade (se ainda não estiver em um) e tentará mover Count – 1 Unidadepara a frente. Se o intervalo não for inferior e Count for menor que zero, esse método recolherá o intervalo na posição do caractere inicial, moverá o ponto de inserção resultante para trás para um limite de Unidade (se ainda não estiver em um) e tentará mover |Contagem| - 1 Unidade com versõesanteriores. Assim, em ambos os casos, recolhimento de um intervalo nãogenerado para um ponto de inserção, seja movendo-se para o início ou fim da Unidade após o colapso, conta como uma Unidade.

O método ITextRange::Move retorna pDelta = número de Unidadesrealmente movidas. Esse método nunca move o ponto de inserção para além da história desse intervalo. Se a Unidade de Contagemmover o ponto de inserção antes do início da história, ela será movida para o início da história e pDelta será definido de acordo. Da mesma forma, se a Unidadede Contagem a movesse para além do final da história, ela será movida para o fim da história.

O método ITextRange::Move funciona de forma semelhante aos métodos MoveLeft e MoveRight orientados pela interface do usuário, exceto que a direção do movimento é lógica e não geométrica. Ou seja, com ITextRange::Mover a direção está no final ou no início da história. Dependendo do idioma, mover-se para o final da história pode estar se movendo para a esquerda ou para a direita. Para ter uma ideia de Count, pressione Ctrl+Seta para a direita em um documento do Microsoft Word para obter uma variedade de seleções. No texto da esquerda para a direita, esse pressionamento de tecla se comporta da mesma forma que Move(tomWord, 1)e MoveRight(tomWord, 1). A contagem corresponde ao número de vezes que você pressiona Ctrl+Seta para a direita.

Por exemplo, se você pressionar Ctrl+Seta para a direita para as seleções mostradas em ambas as figuras a seguir, você acabará com um ponto de inserção na posição 8 do caractere, já que esse comando recolhe as seleções em suas posições de caractere final (7 e 8, respectivamente) e passa para o próximo limite do tomWord .

Posições de caractere para a cadeia de caracteres de texto Posições de caractere para a cadeia de caracteres de texto A primeira seleção não inclui o espaço em branco na posição 7 do caractere, portanto, Ctrl+Seta para a direita passa o espaço para o limite tomWord na posição 8 do caractere. A posição do caractere final já está em um limite tomWord para a segunda seleção, portanto, Ctrl+Seta para a direita apenas recolhe a seleção nesse limite. Da mesma forma, Ctrl+Seta para a esquerda, que para esse texto atua como Move(tomWord, -1)e MoveLeft(tomWord, 1) recolhe a primeira seleção na posição 5 do caractere, que já está em um limite tomWord , portanto, não ocorre mais movimento. Mas Ctrl+Seta para a esquerda recolhe a segunda seleção na posição do caractere 4 e, em seguida, passa para zero, já que esse é o próximo limite tomWord na direção do movimento.

O argumento return, pDelta, é definido como igual ao número de Unidadess em que o ponto de inserção é movido, incluindo uma Unidade para recolher um intervalo não independente e movê-lo para um limite de Unidade . Portanto, se nenhum movimento e nenhum recolhimento ocorrer, como quando o intervalo for um ponto de inserção no final da história, pDelta será definido como zero. Essa abordagem é útil para controlar loops de programas que processam uma história inteira.

Em ambos os casos mencionados acima, a chamada Move(tomWord, 1) define pDelta igual a 1 porque os intervalos foram recolhidos. Da mesma forma, chamar Move(tomWord, -1) define pDelta igual a -1 para ambos os casos. Recolhimento, com ou sem mover parte de uma Unidade para um limite de Unidade , conta como uma Unidade movida.

A direção do movimento refere-se à ordenação de caracteres lógicos no repositório de suporte de texto sem formatação. Essa abordagem evita os problemas de ordenação geométrica, como esquerda versus direita e para cima e para baixo, em software internacional. Esses métodos geométricos ainda são necessários no mecanismo de edição, é claro, pois os teclados têm teclas de direção para invocá-los. Se o intervalo for realmente um objeto ITextSelection , métodos como MoveLeft e MoveRight poderão ser usados.

Se Unit especificar caracteres (tomCharacter), o TOM (Modelo de Objeto de Texto) usará o conjunto de caracteres Unicode. Para converter entre caracteres Unicode e multibyte, as funções MultiByteToWideChar e WideCharToMultiByte fornecem maneiras fáceis de converter entre conjuntos de caracteres Unicode e multibyte na importação e exportação, respectivamente. Para obter mais informações, consulte Abrir. Nessa conexão, o uso de um CR/LF (retorno de carro/alimentação de linha) para separar parágrafos é tão problemático quanto o DBCS (conjunto de caracteres de byte duplo). Os métodos de interface do usuário ITextSelection faz backup em um CR/LF como se fosse um único caractere, mas os métodos ITextRange::Move contam CR/LFs como dois caracteres. É claramente melhor usar um único caractere como separador de parágrafo, que no TOM é representado por um retorno de caractere, embora o caractere separador de parágrafo Unicode, 0x2029, seja aceito. Em geral, os mecanismos TOM devem dar suporte a CR/LF, CR (retorno de carro), LF (alimentação de linha), guia vertical, feed de formulários e 0x2029. O Microsoft Rich Edit 2.0 também dá suporte a CR/CR/LF para compatibilidade com versões anteriores.

Consulte também os métodos ITextRange::MoveStart e ITextRange::MoveEnd, que movem o intervalo Unidade deContagem de Posição Inicial ou Final, respectivamente.

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

Moveend

Moveleft

Moveright

Movestart

MultiByteToWideChar

Abrir

Outros recursos

Referência

Modelo de objeto de texto

WideCharToMultiByte