Compartir a través de


Clase CRectTracker

Permite mostrar, mover y cambiar de tamaño un elemento de distintas maneras.

Sintaxis

class CRectTracker

Miembros

Constructores públicos

Nombre Descripción
CRectTracker::CRectTracker Construye un objeto CRectTracker.

Métodos públicos

Nombre Descripción
CRectTracker::AdjustRect Se llama cuando se cambia el tamaño del rectángulo.
CRectTracker::Draw Representa el rectángulo.
CRectTracker::DrawTrackerRect Se llama al dibujar el borde de un objeto CRectTracker.
CRectTracker::GetHandleMask Se llama para obtener la máscara de los manipuladores de cambio de tamaño de un elemento CRectTracker.
CRectTracker::GetTrueRect Devuelve el ancho y el alto del rectángulo, incluidos los manipuladores de cambio de tamaño.
CRectTracker::HitTest Devuelve la posición actual del cursor en relación con el objeto CRectTracker.
CRectTracker::NormalizeHit Normaliza un código de prueba de posicionamiento.
CRectTracker::OnChangedRect Se llama cuando se ha cambiado el tamaño o se ha movido el rectángulo.
CRectTracker::SetCursor Establece el cursor, en función de su posición sobre el rectángulo.
CRectTracker::Track Permite al usuario manipular el rectángulo.
CRectTracker::TrackRubberBand Permite al usuario la selección de "banda elástica".

Miembros de datos públicos

Nombre Descripción
CRectTracker::m_nHandleSize Determina el tamaño de los manipuladores de cambio de tamaño.
CRectTracker::m_nStyle Estilos actuales del rastreador.
CRectTracker::m_rect Posición actual (en píxeles) del rectángulo.
CRectTracker::m_sizeMin Determina el ancho y el alto mínimos del rectángulo.

Comentarios

CRectTracker no tiene una clase base.

Aunque la clase CRectTracker está diseñada para permitir que el usuario interactúe con elementos OLE mediante una interfaz gráfica, su uso no está restringido a las aplicaciones habilitadas para OLE. Se puede usar en cualquier lugar donde se requiera dicha interfaz de usuario.

Los bordes de CRectTracker pueden ser líneas sólidas o punteadas. El elemento puede tener un borde sombreado o superpuesto con un patrón de sombreado para indicar diferentes estados del elemento. Puede colocar ocho manipuladores de cambio de tamaño en el exterior o en el borde interior del elemento. (Para obtener una explicación de los manipuladores de cambio de tamaño, consulte GetHandleMask). Por último, CRectTracker permite cambiar la orientación de un elemento durante el cambio de tamaño.

Para usar CRectTracker, construya un objeto CRectTracker y especifique qué estados de presentación se inicializan. A continuación, puede usar esta interfaz para proporcionar a los usuarios comentarios visuales sobre el estado actual del elemento OLE asociado al objeto CRectTracker.

Para obtener más información sobre el uso de CRectTracker, consulte el artículo Rastreadores.

Jerarquía de herencia

CRectTracker

Requisitos

Encabezado: afxext.h

CRectTracker::AdjustRect

Lo llama el marco de trabajo cuando se cambia el tamaño del rectángulo de seguimiento mediante un manipulador de cambio de tamaño.

virtual void AdjustRect(
    int nHandle,
    LPRECT lpRect);

Parámetros

nHandle
Índice del manipulador utilizado.

lpRect
Puntero al tamaño actual del rectángulo. (El tamaño de un rectángulo viene dado por su alto y ancho).

Comentarios

El comportamiento predeterminado de esta función permite que la orientación del rectángulo cambie solo cuando se llama a Track y TrackRubberBand con la inversión permitida.

Invalide esta función para controlar el ajuste del rectángulo de seguimiento durante una operación de arrastre. Un método consiste en ajustar las coordenadas especificadas por lpRect antes de devolverlas.

Las características especiales que no son compatibles directamente con CRectTracker, como el ajuste a la cuadrícula o la mantener la relación de aspecto, se pueden implementar invalidando esta función.

CRectTracker::CRectTracker

Crea e inicializa un CRectTracker objeto .

CRectTracker();

CRectTracker(
    LPCRECT lpSrcRect,
    UINT nStyle);

Parámetros

lpSrcRect
Coordenadas del objeto de rectángulo.

nStyle
Especifica el estilo del objeto CRectTracker. Se admiten los estilos siguientes:

  • CRectTracker::solidLine Usar una línea sólida para el borde del rectángulo.

  • CRectTracker::dottedLine Usar una línea punteada para el borde del rectángulo.

  • CRectTracker::hatchedBorder Usar un patrón sombreado para el borde del rectángulo.

  • CRectTracker::resizeInside Cambiar el tamaño de los manipuladores ubicados dentro del rectángulo.

  • CRectTracker::resizeOutside Cambiar el tamaño de los manipuladores ubicados fuera del rectángulo.

  • CRectTracker::hatchInside El patrón de sombreado cubre todo el rectángulo.

Comentarios

El constructor predeterminado inicializa el objeto CRectTracker con los valores de lpSrcRect e inicializa otros tamaños en los valores predeterminados del sistema. Si el objeto se crea sin parámetros, no se inicializan los miembros de datos m_rect y m_nStyle.

CRectTracker::Draw

Llame a esta función para dibujar las líneas externas y la región interna del rectángulo.

void Draw(CDC* pDC) const;

Parámetros

pDC
Puntero al contexto de dispositivo en el que se va a dibujar.

Comentarios

El estilo del rastreador determina cómo se realiza el dibujo. Consulte el constructor de CRectTracker para obtener más información sobre los estilos disponibles.

CRectTracker::DrawTrackerRect

Lo llama el marco de trabajo cada vez que la posición del rastreador ha cambiado mientras se encuentra dentro de la función miembro Track o TrackRubberBand.

virtual void DrawTrackerRect(
    LPCRECT lpRect,
    CWnd* pWndClipTo,
    CDC* pDC,
    CWnd* pWnd);

Parámetros

lpRect
Puntero al elemento RECT que contiene el rectángulo que se va a dibujar.

pWndClipTo
Puntero a la ventana que se va a usar para recortar el rectángulo.

pDC
Puntero al contexto de dispositivo en el que se va a dibujar.

pWnd
Puntero a la ventana en la que se producirá el dibujo.

Comentarios

La implementación predeterminada realiza una llamada a CDC::DrawFocusRect, que dibuja un rectángulo de puntos.

Invalide esta función para proporcionar comentarios diferentes durante la operación de seguimiento.

CRectTracker::GetHandleMask

El marco de trabajo llama a esta función miembro para recuperar la máscara de los manipuladores de cambio de tamaño de un rectángulo.

virtual UINT GetHandleMask() const;

Valor devuelto

Máscara de los manipuladores de cambio de tamaño de un elemento CRectTracker.

Comentarios

Los manipuladores de cambio de tamaño aparecen en los lados y esquinas del rectángulo y permiten al usuario controlar la forma y el tamaño del rectángulo.

Un rectángulo tiene 8 manipuladores de cambio de tamaño numerados del 0 al 7. Cada manipulador de cambio de tamaño se representa mediante un bit de la máscara; el valor de ese bit es 2^ n, donde n es el número de manipulador de cambio de tamaño. Los bits del 0 al 3 corresponden a los manipuladores de cambio de tamaño de esquina, comenzando en la parte superior izquierda y moviéndose en el sentido de las agujas del reloj. Los bits del 4 al 7 corresponden a los manipuladores de cambio de tamaño del lateral, comenzando en la parte superior y moviéndose en el sentido de las agujas del reloj. En la ilustración siguiente, se muestran los manipuladores de cambio de tamaño de un rectángulo y sus correspondientes números y valores de manipulador de tamaño:

Resize handle numbers.

La implementación predeterminada de GetHandleMask devuelve la máscara de los bits para que aparezcan los manipuladores de cambio de tamaño. Si el bit único está activado, se dibujará el manipulador de cambio de tamaño correspondiente.

Invalide esta función miembro para ocultar o mostrar los manipuladores de cambio de tamaño indicados.

CRectTracker::GetTrueRect

Llame a esta función para recuperar las coordenadas del rectángulo.

void GetTrueRect(LPRECT lpTrueRect) const;

Parámetros

lpTrueRect
Puntero a la estructura RECT que contendrá las coordenadas del dispositivo del objeto CRectTracker.

Comentarios

Las dimensiones del rectángulo incluyen el alto y el ancho de los manipuladores de cambio de tamaño ubicados en el borde exterior. Al volver, lpTrueRect siempre es un rectángulo normalizado en coordenadas del dispositivo.

CRectTracker::HitTest

Llame a esta función para averiguar si el usuario ha agarrado un manipulador de cambio de tamaño.

int HitTest(CPoint point) const;

Parámetros

point
Punto, en coordenadas del dispositivo, que se va a probar.

Valor devuelto

El valor devuelto se basa en el tipo enumerado CRectTracker::TrackerHit y puede tener uno de los siguientes valores:

  • CRectTracker::hitNothing -1

  • CRectTracker::hitTopLeft 0

  • CRectTracker::hitTopRight 1

  • CRectTracker::hitBottomRight 2

  • CRectTracker::hitBottomLeft 3

  • CRectTracker::hitTop 4

  • CRectTracker::hitRight 5

  • CRectTracker::hitBottom 6

  • CRectTracker::hitLeft con la versión 7

  • CRectTracker::hitMiddle con la versión 8

CRectTracker::m_nHandleSize

Tamaño, en píxeles, de los manipuladores de cambio de tamaño de CRectTracker.

int m_nHandleSize;

Comentarios

Inicializado con el valor predeterminado del sistema.

CRectTracker::m_rect

Posición actual del rectángulo en coordenadas cliente (píxeles).

CRect m_rect;

CRectTracker::m_sizeMin

Tamaño mínimo del rectángulo.

CSize m_sizeMin;

Comentarios

Los valores predeterminados, cx y cy, se calculan a partir del valor predeterminado del sistema para el ancho del borde. Este miembro de datos solo lo utiliza la función miembro AdjustRect.

CRectTracker::m_nStyle

Estilo actual del rectángulo.

UINT m_nStyle;

Comentarios

Consulte CRectTracker::CRectTracker para obtener una lista de los estilos posibles.

CRectTracker::NormalizeHit

Llame a esta función para convertir un manipulador potencialmente invertido.

int NormalizeHit(int nHandle) const;

Parámetros

nHandle
Manipulador seleccionado por el usuario.

Valor devuelto

Índice del manipulador normalizado.

Comentarios

Cuando se llama a CRectTracker::Track o CRectTracker::TrackRubberBand con la inversión permitida, es posible invertir el rectángulo en el eje X, el eje Y, o ambos. Cuando esto suceda, HitTest devolverá manipuladores que también están invertidos con respecto al rectángulo. Esto no es adecuado para dibujar comentarios del cursor porque los comentarios dependen de la posición de pantalla del rectángulo, no de la parte de la estructura de datos del rectángulo que se va a modificar.

CRectTracker::OnChangedRect

Lo llama el marco de trabajo cada vez que el rectángulo de seguimiento ha cambiado durante una llamada a Track.

virtual void OnChangedRect(const CRect& rectOld);

Parámetros

rectOld
Contiene las coordenadas del dispositivo antiguas del objeto CRectTracker.

Comentarios

En el momento en el que se llama a esta función, se han quitado todos los comentarios dibujados con DrawTrackerRect. La implementación predeterminada de esta función no hace nada.

Invalide esta función cuando desee realizar cualquier acción después de cambiar el tamaño del rectángulo.

CRectTracker::SetCursor

Llame a esta función para cambiar la forma del cursor mientras está sobre la región del objeto CRectTracker.

BOOL SetCursor(
    CWnd* pWnd,
    UINT nHitTest) const;

Parámetros

pWnd
Apunta a la ventana que contiene actualmente el cursor.

nHitTest
Resultados de la prueba de posicionamiento anterior, del mensaje WM_SETCURSOR.

Valor devuelto

Distinto de cero si el posicionamiento anterior estaba sobre el rectángulo de seguimiento; de lo contrario, 0.

Comentarios

Llame a esta función desde dentro de la función de la ventana que controla el mensaje WM_SETCURSOR (normalmente, OnSetCursor).

CRectTracker::Track

Llame a esta función para mostrar la interfaz de usuario para cambiar el tamaño del rectángulo.

BOOL Track(
    CWnd* pWnd,
    CPoint point,
    BOOL bAllowInvert = FALSE,
    CWnd* pWndClipTo = NULL);

Parámetros

pWnd
Objeto de ventana que contiene el rectángulo.

point
Coordenadas del dispositivo de la posición actual del mouse con respecto al área cliente.

bAllowInvert
Si es TRUE, el rectángulo se puede invertir a lo largo del eje X o del eje Y; en caso contrario, FALSE.

pWndClipTo
Ventana en la que se recortarán las operaciones de dibujo. Si es NULL, se usa pWnd como rectángulo de recorte.

Valor devuelto

Si se presiona la tecla ESC, se detiene el proceso de seguimiento, el rectángulo almacenado en el rastreador no se modifica y se devuelve 0. Si se confirma el cambio, moviendo el mouse y liberando el botón izquierdo del mouse, se registra la nueva posición y tamaño en el rectángulo del rastreador y se devuelve un valor distinto de cero.

Comentarios

Normalmente se le llama desde dentro de la función de la aplicación que controla el mensaje WM_LBUTTONDOWN (normalmente, OnLButtonDown).

Esta función capturará el mouse hasta que el usuario suelte el botón izquierdo del mouse, pulse la tecla ESC o pulse el botón derecho del mouse. A medida que el usuario mueve el cursor del mouse, se actualizan los comentarios llamando a DrawTrackerRect y OnChangedRect.

Si bAllowInvert es TRUE, el rectángulo de seguimiento se puede invertir en el eje X o en el eje Y.

CRectTracker::TrackRubberBand

Llame a esta función para realizar la selección de banda elástica.

BOOL TrackRubberBand(
    CWnd* pWnd,
    CPoint point,
    BOOL bAllowInvert = TRUE);

Parámetros

pWnd
Objeto de ventana que contiene el rectángulo.

point
Coordenadas del dispositivo de la posición actual del mouse con respecto al área cliente.

bAllowInvert
Si es TRUE, el rectángulo se puede invertir a lo largo del eje X o del eje Y; en caso contrario, FALSE.

Valor devuelto

Distinto de cero si el mouse se ha movido y el rectángulo no está vacío; de lo contrario, 0.

Comentarios

Normalmente, se le llama desde dentro de la función de la aplicación que controla el mensaje WM_LBUTTONDOWN (normalmente, OnLButtonDown).

Esta función capturará el mouse hasta que el usuario suelte el botón izquierdo del mouse, pulse la tecla ESC o pulse el botón derecho del mouse. A medida que el usuario mueve el cursor del mouse, se actualizan los comentarios llamando a DrawTrackerRect y OnChangedRect.

El seguimiento se realiza con una selección de tipo de banda elástica desde el manipulador inferior derecho. Si se permite la inversión, el rectángulo se puede ajustar arrastrando hacia arriba y hacia la izquierda, o hacia abajo y hacia la derecha.

Consulte también

Ejemplo TRACKER de MFC
Ejemplo DRAWCLI de MFC
Gráfico de jerarquías
COleResizeBar (clase)
CRect (clase)