Método ITextRange::Move (tom.h)
Mueve el punto de inserción hacia delante o hacia atrás un número especificado de unidades. Si el intervalo no es desndegenerado, el intervalo se contrae a un punto de inserción en cualquier extremo, en función de Count y, a continuación, se mueve.
Sintaxis
HRESULT Move(
long Unit,
long Count,
long *pDelta
);
Parámetros
Unit
Tipo: long
Unidad que se va a usar. El valor predeterminado es tomCharacter. Para obtener información sobre otros valores, vea la discusión en ITextRange.
Count
Tipo: long
Número de unidadesque se van a mover más allá. El valor predeterminado es 1. Si Count es mayor que cero, el movimiento está hacia delante (hacia el final de la historia) y si Count es menor que cero, el movimiento está hacia atrás hacia el principio. Si Count es cero, el intervalo no cambia.
pDelta
Tipo: long*
Número real de unidadesque el punto de inserción se mueve más allá. El puntero puede ser NULL. Para obtener más información, vea la sección Comentarios.
Valor devuelto
Tipo: HRESULT
El método devuelve un valor HRESULT . Si el método se mueve correctamente en el punto de inserción, devuelve S_OK. Si se produce un error en el método, devuelve uno de los siguientes códigos de error. Para obtener más información sobre los códigos de error COM, vea Control de errores en COM.
Código devuelto | Descripción |
---|---|
|
No se admite la unidad. |
|
Error por algún otro motivo. |
Comentarios
Si el intervalo es degenerado (un punto de inserción), este método intenta mover el número de unidadesde recuento de puntos de inserción.
Si el intervalo no es desingenerado y Count es mayor que cero, este método contrae el intervalo en la posición del carácter final, mueve el punto de inserción resultante hacia delante a un límite de unidad (si aún no está en uno) y, a continuación, intenta mover Count - 1 Unidadhacia delante. Si el intervalo no es desndegenerado y Count es menor que cero, este método contrae el intervalo en la posición del carácter inicial, mueve el punto de inserción resultante hacia atrás a un límite de unidad (si aún no está en uno) y, a continuación, intenta mover |Recuento| - 1 Unidadhacia atrás. Por lo tanto, en ambos casos, contraer un intervalo no degenerado a un punto de inserción, tanto si se mueve al inicio como al final de la unidad después del colapso, cuenta como unidad.
El método ITextRange::Move devuelve pDelta = número de unidadesque realmente se mueven. Este método nunca mueve el punto de inserción más allá del artículo de este intervalo. Si CountUnits movería el punto de inserción antes del principio del artículo, se mueve al principio de la historia y pDelta se establece en consecuencia. Del mismo modo, si CountUnits lo movería más allá del final de la historia, se mueve al final de la historia.
El método ITextRange::Move funciona de forma similar a los métodos MoveLeft y MoveRight orientados a la interfaz de usuario, excepto que la dirección del movimiento es lógica en lugar de geométrica. Es decir, con ITextRange::Move la dirección está hacia el final o hacia el principio de la historia. Dependiendo del idioma, mover hacia el final de la historia podría estar moviéndose a la izquierda o a la derecha. Para obtener una sensación para Count, presione Ctrl+Flecha derecha en un documento de Microsoft Word para obtener una variedad de selecciones. En texto de izquierda a derecha, esta pulsación de tecla se comporta igual que Move(tomWord, 1)
y MoveRight(tomWord, 1)
.
Count corresponde al número de veces que presiona Ctrl+Flecha derecha.
Por ejemplo, si presiona Ctrl+Flecha derecha para las selecciones que se muestran en las dos figuras siguientes, termina con un punto de inserción en la posición de carácter 8, ya que este comando contrae las selecciones en sus posiciones de carácter final (7 y 8, respectivamente) y se mueve al siguiente límite de tomWord .
Posiciones de caracteres La primera selección no incluye el espacio en blanco en la posición del carácter 7, por lo que Ctrl+Flecha derecha se mueve más allá del espacio al límite de tomWord en la posición del carácter 8. La posición del carácter final ya está en un límite tomWord para la segunda selección, por lo que Ctrl+Flecha derecha simplemente contrae la selección en ese límite. Del mismo modo, Ctrl+Flecha izquierda, que para este texto actúa comoMove(tomWord, -1)
y MoveLeft(tomWord, 1)
contrae la primera selección en la posición de carácter 5, que ya está en un límite tomWord , por lo que no se produce más movimiento. Pero Ctrl+Flecha izquierda contrae la segunda selección en la posición del carácter 4 y, a continuación, se mueve a cero, ya que ese es el siguiente límite tomWord en la dirección del movimiento.
El argumento return, pDelta, se establece igual al número de unidadesque se mueve el punto de inserción, incluida una unidad para contraer un intervalo no degenerado y moverla a un límite de unidad . Por lo tanto, si no se produce ningún movimiento y no se produce ningún colapso, como cuando el intervalo es un punto de inserción al final del artículo, pDelta se establece igual a cero. Este enfoque es útil para controlar bucles de programa que procesan una historia completa.
En ambos casos mencionados anteriormente, la llamada a Move(tomWord, 1)
establece pDelta igual a 1 porque los intervalos estaban contraídos. De forma similar, la llamada a Move(tomWord, -1)
establece pDelta igual a -1 para ambos casos. Contraer, con o sin mover parte de una unidad a un límite de unidad , cuenta como unidad movida.
La dirección del movimiento hace referencia al orden de caracteres lógicos en el almacén de respaldo de texto sin formato. Este enfoque evita los problemas de ordenación geométrica, como izquierda frente a derecha y hacia abajo, en software internacional. Estos métodos geométricos siguen siendo necesarios en el motor de edición, por supuesto, ya que los teclados tienen teclas de dirección para invocarlos. Si el rango es realmente un objeto ITextSelection , se pueden usar métodos como MoveLeft y MoveRight .
Si Unit especifica caracteres (tomCharacter), el Modelo de objetos de texto (TOM) usa el juego de caracteres Unicode. Para convertir entre Unicode y caracteres multibyte, las funciones MultiByteToWideChar y WideCharToMultiByte proporcionan formas sencillas de convertir entre los juegos de caracteres Unicode y multibyte en la importación y exportación, respectivamente. Para obtener más información, consulte Abrir. En esta conexión, el uso de un retorno de carro/avance de línea (CR/LF) para separar párrafos es tan problemático como juego de caracteres de doble byte (DBCS). Los métodos de la interfaz de usuario de ITextSelection se copian en una copia de seguridad de un CR/LF como si fuera un solo carácter, pero los métodos ITextRange::Move cuentan CR/LFs como dos caracteres. Es claramente mejor usar un solo carácter como separador de párrafos, que en TOM se representa mediante una devolución de caracteres, aunque se acepta el carácter separador de párrafo Unicode, 0x2029. En general, los motores TOM deben admitir CR/LF, retorno de carro (CR), avance de línea (LF), tabulación vertical, fuente de formulario y 0x2029. Microsoft Rich Edit 2.0 también admite CR/CR/LF para la compatibilidad con versiones anteriores.
Consulte también los métodos ITextRange::MoveStart e ITextRange::MoveEnd, que mueven el intervalo Unidad de recuentode posición inicial o final, respectivamente.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | tom.h |
Archivo DLL | Msftedit.dll |
Consulte también
Conceptual
Otros recursos
Referencia