Classe CRectTracker
Consente di visualizzare, spostare e ridimensionare un elemento in modi diversi.
Sintassi
class CRectTracker
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CRectTracker::CRectTracker | Costruisce un oggetto CRectTracker . |
Metodi pubblici
Nome | Descrizione |
---|---|
CRectTracker::AdjustRect | Chiamato quando il rettangolo viene ridimensionato. |
CRectTracker::D raw | Esegue il rendering del rettangolo. |
CRectTracker::D rawTrackerRect | Chiamato quando si disegna il bordo di un CRectTracker oggetto . |
CRectTracker::GetHandleMask | Chiamato per ottenere la maschera degli handle di ridimensionamento di un CRectTracker elemento. |
CRectTracker::GetTrueRect | Restituisce la larghezza e l'altezza del rettangolo, inclusi i quadratini di ridimensionamento. |
CRectTracker::HitTest | Restituisce la posizione corrente del cursore correlato all'oggetto CRectTracker . |
CRectTracker::NormalizeHit | Normalizza un codice di hit test. |
CRectTracker::OnChangedRectRect | Chiamato quando il rettangolo è stato ridimensionato o spostato. |
CRectTracker::SetCursor | Imposta il cursore, a seconda della posizione sul rettangolo. |
CRectTracker::Track | Consente all'utente di modificare il rettangolo. |
CRectTracker::TrackRubberBand | Consente all'utente di "banda di gomma" la selezione. |
Membri dati pubblici
Nome | Descrizione |
---|---|
CRectTracker::m_nHandleSize | Determina le dimensioni degli handle di ridimensionamento. |
CRectTracker::m_nStyle | Stili correnti del tracciatore. |
CRectTracker::m_rect | Posizione corrente (in pixel) del rettangolo. |
CRectTracker::m_sizeMin | Determina la larghezza e l'altezza minime del rettangolo. |
Osservazioni:
CRectTracker
non dispone di una classe di base.
Anche se la CRectTracker
classe è progettata per consentire all'utente di interagire con gli elementi OLE tramite un'interfaccia grafica, il relativo utilizzo non è limitato alle applicazioni abilitate per OLE. Può essere usato ovunque sia necessaria un'interfaccia utente di questo tipo.
CRectTracker
i bordi possono essere linee a tinta unita o tratteggiata. All'elemento può essere assegnato un bordo tratteggio o sovrapposto con un motivo tratteggio per indicare stati diversi dell'elemento. È possibile posizionare otto quadratini di ridimensionamento sull'esterno o sul bordo interno dell'elemento. Per una spiegazione degli handle di ridimensionamento, vedere GetHandleMask. Infine, un oggetto CRectTracker
consente di modificare l'orientamento di un elemento durante il ridimensionamento.
Per usare CRectTracker
, costruire un CRectTracker
oggetto e specificare gli stati di visualizzazione inizializzati. È quindi possibile usare questa interfaccia per fornire all'utente un feedback visivo sullo stato corrente dell'elemento OLE associato all'oggetto CRectTracker
.
Per altre informazioni sull'uso CRectTracker
di , vedere l'articolo Tracker.
Gerarchia di ereditarietà
CRectTracker
Requisiti
Intestazione: afxext.h
CRectTracker::AdjustRect
Chiamato dal framework quando il rettangolo di rilevamento viene ridimensionato usando un handle di ridimensionamento.
virtual void AdjustRect(
int nHandle,
LPRECT lpRect);
Parametri
nHandle
Indice dell'handle utilizzato.
lpRect
Puntatore alla dimensione corrente del rettangolo. Le dimensioni di un rettangolo sono date in base all'altezza e alla larghezza.
Osservazioni:
Il comportamento predefinito di questa funzione consente di modificare l'orientamento del rettangolo solo quando Track
e TrackRubberBand
vengono chiamati con l'inversione consentita.
Eseguire l'override di questa funzione per controllare la regolazione del rettangolo di rilevamento durante un'operazione di trascinamento. Un metodo consiste nel regolare le coordinate specificate da lpRect prima della restituzione.
È possibile implementare funzionalità speciali non supportate direttamente da CRectTracker
, ad esempio snap-to-grid o keep-aspect-ratio, eseguendo l'override di questa funzione.
CRectTracker::CRectTracker
Crea e inizializza un CRectTracker
oggetto .
CRectTracker();
CRectTracker(
LPCRECT lpSrcRect,
UINT nStyle);
Parametri
lpSrcRect
Coordinate dell'oggetto rettangolo.
nStyle
Specifica lo stile dell'oggetto CRectTracker
. Sono supportati gli stili seguenti:
CRectTracker::solidLine
Usare una linea continua per il bordo del rettangolo.CRectTracker::dottedLine
Utilizzare una linea tratteggiata per il bordo del rettangolo.CRectTracker::hatchedBorder
Utilizzare un motivo tratteggio per il bordo rettangolo.CRectTracker::resizeInside
Ridimensiona gli handle che si trovano all'interno del rettangolo.CRectTracker::resizeOutside
Ridimensiona gli handle che si trovano all'esterno del rettangolo.CRectTracker::hatchInside
Motivo tratteggio copre l'intero rettangolo.
Osservazioni:
Il costruttore predefinito inizializza l'oggetto CRectTracker
con i valori di lpSrcRect e inizializza le altre dimensioni alle impostazioni predefinite di sistema. Se l'oggetto viene creato senza parametri, i m_rect
membri dati e m_nStyle
non vengono inizializzati.
CRectTracker::D raw
Chiamare questa funzione per disegnare le linee esterne del rettangolo e l'area interna.
void Draw(CDC* pDC) const;
Parametri
pDC
Puntatore al contesto del dispositivo in cui disegnare.
Osservazioni:
Lo stile del tracciatore determina come viene eseguito il disegno. Per altre informazioni sugli stili disponibili, vedere il costruttore CRectTracker
.
CRectTracker::D rawTrackerRect
Chiamato dal framework ogni volta che la posizione del tracker è cambiata all'interno della Track
funzione membro o TrackRubberBand
.
virtual void DrawTrackerRect(
LPCRECT lpRect,
CWnd* pWndClipTo,
CDC* pDC,
CWnd* pWnd);
Parametri
lpRect
Puntatore all'oggetto RECT
contenente il rettangolo da disegnare.
pWndClipTo
Puntatore alla finestra da usare per ritagliare il rettangolo.
pDC
Puntatore al contesto del dispositivo in cui disegnare.
pWnd
Puntatore alla finestra in cui verrà eseguito il disegno.
Osservazioni:
L'implementazione predefinita esegue una chiamata a CDC::DrawFocusRect
, che disegna un rettangolo punteggiato.
Eseguire l'override di questa funzione per fornire commenti e suggerimenti diversi durante l'operazione di rilevamento.
CRectTracker::GetHandleMask
Il framework chiama questa funzione membro per recuperare la maschera per gli handle di ridimensionamento di un rettangolo.
virtual UINT GetHandleMask() const;
Valore restituito
Maschera degli handle di ridimensionamento di un CRectTracker
elemento.
Osservazioni:
I quadratini di ridimensionamento vengono visualizzati sui lati e sugli angoli del rettangolo e consentono all'utente di controllare la forma e le dimensioni del rettangolo.
Un rettangolo ha 8 handle di ridimensionamento numerati da 0 a 7. Ogni handle di ridimensionamento è rappresentato da un po' nella maschera; il valore di tale bit è 2^ n, dove n è il numero di handle di ridimensionamento. I bit 0-3 corrispondono ai quadratini di ridimensionamento dell'angolo, a partire dall'angolo superiore sinistro in senso orario. I bit da 4 a 7 corrispondono ai quadratini di ridimensionamento laterale a partire dalla parte superiore in senso orario. La figura seguente mostra i quadratini di ridimensionamento di un rettangolo e i relativi valori e numeri di handle di ridimensionamento corrispondenti:
L'implementazione predefinita di GetHandleMask
restituisce la maschera dei bit in modo che vengano visualizzati gli handle di ridimensionamento. Se il singolo bit è attivo, verrà disegnato l'handle di ridimensionamento corrispondente.
Eseguire l'override di questa funzione membro per nascondere o visualizzare gli handle di ridimensionamento indicati.
CRectTracker::GetTrueRect
Chiamare questa funzione per recuperare le coordinate del rettangolo.
void GetTrueRect(LPRECT lpTrueRect) const;
Parametri
lpTrueRect
Puntatore alla RECT
struttura che conterrà le coordinate del dispositivo dell'oggetto CRectTracker
.
Osservazioni:
Le dimensioni del rettangolo includono l'altezza e la larghezza di eventuali quadratini di ridimensionamento posizionati sul bordo esterno. Al momento della restituzione, lpTrueRect è sempre un rettangolo normalizzato nelle coordinate del dispositivo.
CRectTracker::HitTest
Chiamare questa funzione per scoprire se l'utente ha afferrato un handle di ridimensionamento.
int HitTest(CPoint point) const;
Parametri
point
Punto, nelle coordinate del dispositivo, da testare.
Valore restituito
Il valore restituito è basato sul tipo CRectTracker::TrackerHit
enumerato e può avere uno dei valori seguenti:
CRectTracker::hitNothing
-1CRectTracker::hitTopLeft
0CRectTracker::hitTopRight
1CRectTracker::hitBottomRight
2CRectTracker::hitBottomLeft
3CRectTracker::hitTop
4CRectTracker::hitRight
5CRectTracker::hitBottom
6CRectTracker::hitLeft
7CRectTracker::hitMiddle
8
CRectTracker::m_nHandleSize
Dimensioni, in pixel, degli handle di CRectTracker
ridimensionamento.
int m_nHandleSize;
Osservazioni:
Inizializzato con il valore di sistema predefinito.
CRectTracker::m_rect
Posizione corrente del rettangolo nelle coordinate client (pixel).
CRect m_rect;
CRectTracker::m_sizeMin
Dimensione minima del rettangolo.
CSize m_sizeMin;
Osservazioni:
Entrambi i valori predefiniti e cx
cy
, vengono calcolati dal valore di sistema predefinito per la larghezza del bordo. Questo membro dati viene utilizzato solo dalla AdjustRect
funzione membro.
CRectTracker::m_nStyle
Stile corrente del rettangolo.
UINT m_nStyle;
Osservazioni:
Per un elenco di possibili stili, vedere CRectTracker::CRectTracker .
CRectTracker::NormalizeHit
Chiamare questa funzione per convertire un handle potenzialmente invertito.
int NormalizeHit(int nHandle) const;
Parametri
nHandle
Handle selezionato dall'utente.
Valore restituito
Indice dell'handle normalizzato.
Osservazioni:
Quando CRectTracker::Track
o CRectTracker::TrackRubberBand
viene chiamato con inversione consentita, è possibile che il rettangolo venga invertito sull'asse x, sull'asse y o su entrambi. In questo caso, HitTest
restituirà handle che vengono invertiti anche rispetto al rettangolo. Ciò non è appropriato per il feedback del cursore di disegno perché il feedback dipende dalla posizione dello schermo del rettangolo, non dalla parte della struttura di dati del rettangolo che verrà modificata.
CRectTracker::OnChangedRectRect
Chiamato dal framework ogni volta che il rettangolo di rilevamento è cambiato durante una chiamata a Track
.
virtual void OnChangedRect(const CRect& rectOld);
Parametri
rectOld
Contiene le coordinate del dispositivo precedenti dell'oggetto CRectTracker
.
Osservazioni:
Al momento della chiamata di questa funzione, tutti i feedback estratti con DrawTrackerRect
sono stati rimossi. L'implementazione predefinita di questa funzione non esegue alcuna operazione.
Eseguire l'override di questa funzione quando si desidera eseguire qualsiasi azione dopo il ridimensionamento del rettangolo.
CRectTracker::SetCursor
Chiamare questa funzione per modificare la forma del cursore mentre si trova sull'area CRectTracker
dell'oggetto.
BOOL SetCursor(
CWnd* pWnd,
UINT nHitTest) const;
Parametri
pWnd
Punta alla finestra che contiene attualmente il cursore.
nHitTest
Risultati dell'hit test precedente, dal messaggio WM_SETCURSOR.
Valore restituito
Diverso da zero se l'hit precedente è stato superato il rettangolo di rilevamento; in caso contrario, 0.
Osservazioni:
Chiamare questa funzione dall'interno della funzione della finestra che gestisce il messaggio WM_SETCURSOR (in OnSetCursor
genere ).
CRectTracker::Track
Chiamare questa funzione per visualizzare l'interfaccia utente per ridimensionare il rettangolo.
BOOL Track(
CWnd* pWnd,
CPoint point,
BOOL bAllowInvert = FALSE,
CWnd* pWndClipTo = NULL);
Parametri
pWnd
Oggetto finestra contenente il rettangolo.
point
Coordinate del dispositivo della posizione corrente del mouse rispetto all'area client.
bAllowInvert
Se TRUE, il rettangolo può essere invertito lungo l'asse x o l'asse y; in caso contrario FALSE.
pWndClipTo
Finestra in cui verranno ritagliate le operazioni di disegno. Se NULL, pWnd viene usato come rettangolo di ritaglio.
Valore restituito
Se il tasto ESC viene premuto, il processo di rilevamento viene interrotto, il rettangolo archiviato nel tracciatore non viene modificato e viene restituito 0. Se viene eseguito il commit della modifica, spostando il mouse e rilasciando il pulsante sinistro del mouse, la nuova posizione e/o dimensione viene registrata nel rettangolo del tracker e viene restituito un valore diverso da zero.
Osservazioni:
Questo viene in genere chiamato dall'interno della funzione dell'applicazione che gestisce il WM_LBUTTONDOWN
messaggio (in OnLButtonDown
genere ).
Questa funzione acquisisce il mouse finché l'utente non rilascia il pulsante sinistro del mouse, preme ESC o preme il pulsante destro del mouse. Quando l'utente sposta il cursore del mouse, il feedback viene aggiornato chiamando DrawTrackerRect
e OnChangedRect
.
Se bAllowInvert è TRUE, il rettangolo di rilevamento può essere invertito sull'asse x o sull'asse y.
CRectTracker::TrackRubberBand
Chiamare questa funzione per eseguire la selezione della banda di gomma.
BOOL TrackRubberBand(
CWnd* pWnd,
CPoint point,
BOOL bAllowInvert = TRUE);
Parametri
pWnd
Oggetto finestra contenente il rettangolo.
point
Coordinate del dispositivo della posizione corrente del mouse rispetto all'area client.
bAllowInvert
Se TRUE, il rettangolo può essere invertito lungo l'asse x o l'asse y; in caso contrario FALSE.
Valore restituito
Diverso da zero se il mouse è stato spostato e il rettangolo non è vuoto; in caso contrario, 0.
Osservazioni:
Viene in genere chiamato dall'interno della funzione dell'applicazione che gestisce il messaggio WM_LBUTTONDOWN (in OnLButtonDown
genere ).
Questa funzione acquisisce il mouse finché l'utente non rilascia il pulsante sinistro del mouse, preme ESC o preme il pulsante destro del mouse. Quando l'utente sposta il cursore del mouse, il feedback viene aggiornato chiamando DrawTrackerRect
e OnChangedRect
.
Il tracciamento viene eseguito con una selezione di tipo elastico dal quadratino inferiore destro. Se l'inversione è consentita, il rettangolo può essere ridimensionato trascinando verso l'alto e verso sinistra o verso il basso e verso destra.
Vedi anche
MFC Sample TRACKER
MFC Sample DRAWCLI
Grafico della gerarchia
Classe COleResizeBar
Classe CRect