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 |
---|---|
|
Não há suporte para a unidade. |
|
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 .
de caractere para 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 comoMove(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
Outros recursos
Referência