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 objeto CRectTracker
.
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:
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
-1CRectTracker::hitTopLeft
0CRectTracker::hitTopRight
1CRectTracker::hitBottomRight
2CRectTracker::hitBottomLeft
3CRectTracker::hitTop
4CRectTracker::hitRight
5CRectTracker::hitBottom
6CRectTracker::hitLeft
con la versión 7CRectTracker::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)