Classe CView
Fornisce la funzionalità di base per le classi di visualizzazione definite dall'utente.
Sintassi
class AFX_NOVTABLE CView : public CWnd
Membri
Costruttori protetti
Nome | Descrizione |
---|---|
CView::CView |
Costruisce un oggetto CView . |
Metodi pubblici
Nome | Descrizione |
---|---|
CView::DoPreparePrinting |
Visualizza la finestra di dialogo Stampa e crea il contesto del dispositivo della stampante; chiamare quando si esegue l'override della OnPreparePrinting funzione membro. |
CView::GetDocument |
Restituisce il documento associato alla visualizzazione. |
CView::IsSelected |
Verifica se è selezionato un elemento del documento. Obbligatorio per il supporto OLE. |
CView::OnDragEnter |
Chiamato quando un elemento viene trascinato per la prima volta nell'area di trascinamento della selezione di una visualizzazione. |
CView::OnDragLeave |
Chiamato quando un elemento trascinato lascia l'area di trascinamento della selezione di una visualizzazione. |
CView::OnDragOver |
Chiamato quando un elemento viene trascinato sull'area di trascinamento della selezione di una visualizzazione. |
CView::OnDragScroll |
Chiamato per determinare se il cursore viene trascinato nell'area di scorrimento della finestra. |
CView::OnDrop |
Chiamato quando un elemento è stato eliminato nell'area di trascinamento della selezione di una visualizzazione, gestore predefinito. |
CView::OnDropEx |
Chiamato quando un elemento è stato eliminato nell'area di trascinamento della selezione di una vista, gestore primario. |
CView::OnInitialUpdate |
Chiamato dopo che una visualizzazione è stata collegata per la prima volta a un documento. |
CView::OnPrepareDC |
Chiamato prima che venga chiamata la funzione membro per la OnDraw visualizzazione dello schermo o la funzione membro viene chiamata per la stampa o l'anteprima OnPrint di stampa. |
CView::OnScroll |
Chiamato quando gli elementi OLE vengono trascinati oltre i bordi della visualizzazione. |
CView::OnScrollBy |
Chiamato quando viene eseguito lo scorrimento di una visualizzazione contenente elementi OLE attivi sul posto. |
Metodi protetti
Nome | Descrizione |
---|---|
CView::OnActivateFrame |
Chiamato quando la finestra cornice contenente la visualizzazione viene attivata o disattivata. |
CView::OnActivateView |
Chiamato quando viene attivata una visualizzazione. |
CView::OnBeginPrinting |
Chiamato quando inizia un processo di stampa; eseguire l'override per allocare risorse GDI (Graphics Device Interface). |
CView::OnDraw |
Chiamato per eseguire il rendering di un'immagine del documento per la visualizzazione dello schermo, la stampa o l'anteprima di stampa. Implementazione richiesta. |
CView::OnEndPrinting |
Chiamato quando termina un processo di stampa; eseguire l'override per deallocare le risorse GDI. |
CView::OnEndPrintPreview |
Chiamato quando viene chiusa la modalità di anteprima. |
CView::OnPreparePrinting |
Chiamato prima che un documento venga stampato o visualizzato in anteprima; eseguire l'override per inizializzare la finestra di dialogo Stampa. |
CView::OnPrint |
Chiamato per stampare o visualizzare in anteprima una pagina del documento. |
CView::OnUpdate |
Chiamato per notificare a una visualizzazione che il documento è stato modificato. |
Osservazioni:
Una visualizzazione è collegata a un documento e funge da intermediario tra il documento e l'utente: la visualizzazione esegue il rendering di un'immagine del documento sullo schermo o sulla stampante e interpreta l'input dell'utente come operazioni sul documento.
Una visualizzazione è un elemento figlio di una finestra cornice. Più visualizzazioni possono condividere una finestra cornice, come nel caso di una finestra di divisione. La relazione tra una classe di visualizzazione, una classe finestra cornice e una classe documento viene stabilita da un CDocTemplate
oggetto . Quando l'utente apre una nuova finestra o ne divide uno esistente, il framework crea una nuova visualizzazione e lo collega al documento.
È possibile allegare una visualizzazione a un solo documento, ma un documento può avere più visualizzazioni collegate contemporaneamente, ad esempio se il documento viene visualizzato in una finestra di divisione o in più finestre figlio in un'applicazione MDI (Document Interface). L'applicazione può supportare diversi tipi di visualizzazioni per un determinato tipo di documento; Ad esempio, un programma di elaborazione delle parole può fornire sia una visualizzazione testo completa di un documento che una visualizzazione struttura che mostra solo le intestazioni di sezione. Questi diversi tipi di visualizzazioni possono essere posizionati in finestre cornice separate o in riquadri separati di una singola finestra cornice se si utilizza una finestra di divisione.
Una visualizzazione può essere responsabile della gestione di diversi tipi di input, ad esempio input da tastiera, input del mouse o input tramite trascinamento della selezione, nonché comandi da menu, barre degli strumenti o barre di scorrimento. Una visualizzazione riceve i comandi inoltrati dalla relativa finestra cornice. Se la vista non gestisce un determinato comando, inoltra il comando al documento associato. Analogamente a tutte le destinazioni di comando, una vista gestisce i messaggi tramite una mappa dei messaggi.
La visualizzazione è responsabile della visualizzazione e della modifica dei dati del documento, ma non per l'archiviazione. Il documento fornisce la visualizzazione con i dettagli necessari sui relativi dati. È possibile consentire alla visualizzazione di accedere direttamente ai membri dati del documento oppure è possibile fornire funzioni membro nella classe documento per la classe di visualizzazione da chiamare.
Quando i dati di un documento cambiano, la visualizzazione responsabile delle modifiche chiama in genere la CDocument::UpdateAllViews
funzione per il documento, che notifica tutte le altre visualizzazioni chiamando la OnUpdate
funzione membro per ognuna. L'implementazione predefinita di OnUpdate
invalida l'intera area client della visualizzazione. È possibile eseguirne l'override per invalidare solo le aree dell'area client mappate alle parti modificate del documento.
Per usare CView
, derivare una classe da essa e implementare la funzione membro per eseguire la OnDraw
visualizzazione dello schermo. È anche possibile utilizzare OnDraw
per eseguire la stampa e l'anteprima di stampa. Il framework gestisce il ciclo di stampa per la stampa e l'anteprima del documento.
Una vista gestisce i messaggi della barra di scorrimento con le CWnd::OnHScroll
funzioni membro e CWnd::OnVScroll
. È possibile implementare la gestione dei messaggi della barra di scorrimento in queste funzioni oppure è possibile usare la CView
classe CScrollView
derivata per gestire automaticamente lo scorrimento.
Oltre CScrollView
a , la libreria di classi Microsoft Foundation fornisce nove altre classi derivate da CView
:
CCtrlView
, una vista che consente l'utilizzo del documento: architettura di visualizzazione con controlli struttura ad albero, elenco e modifica avanzata.CDaoRecordView
, una vista che visualizza i record di database nei controlli della finestra di dialogo.CEditView
, una vista che fornisce un semplice editor di testo su più righe. È possibile utilizzare unCEditView
oggetto come controllo in una finestra di dialogo, nonché una visualizzazione in un documento.CFormView
, una visualizzazione scorrevole che contiene controlli finestra di dialogo ed è basata su una risorsa modello di finestra di dialogo.CListView
, una visualizzazione che consente l'utilizzo del documento - architettura di visualizzazione con controlli elenco.CRecordView
, una vista che visualizza i record di database nei controlli della finestra di dialogo.CRichEditView
, una vista che consente l'utilizzo del documento - architettura di visualizzazione con controlli di modifica avanzati.CScrollView
, una visualizzazione che fornisce automaticamente supporto per lo scorrimento.CTreeView
, una vista che consente l'utilizzo del documento - Architettura di visualizzazione con controlli albero.
La CView
classe dispone inoltre di una classe di implementazione derivata denominata CPreviewView
, usata dal framework per eseguire l'anteprima di stampa. Questa classe fornisce il supporto per le funzionalità univoche per la finestra di anteprima di stampa, ad esempio una barra degli strumenti, un'anteprima a pagina singola o doppia e lo zoom, ovvero l'ingrandimento dell'immagine in anteprima. Non è necessario chiamare o eseguire l'override di una delle CPreviewView
funzioni membro di , a meno che non si voglia implementare la propria interfaccia per l'anteprima di stampa, ad esempio se si vuole supportare la modifica in modalità anteprima di stampa. Per altre informazioni sull'uso CView
di , vedere Architettura e stampa di documenti/viste. Per altre informazioni sulla personalizzazione dell'anteprima di stampa, vedere la nota tecnica 30 .
Gerarchia di ereditarietà
CView
Requisiti
Intestazione: afxwin.h
CView::CView
Costruisce un oggetto CView
.
CView();
Osservazioni:
Il framework chiama il costruttore quando viene creata una nuova finestra cornice o viene divisa una finestra. Eseguire l'override della OnInitialUpdate
funzione membro per inizializzare la visualizzazione dopo il collegamento del documento.
CView::DoPreparePrinting
Chiamare questa funzione dall'override di per richiamare la finestra di OnPreparePrinting
dialogo Stampa e creare un contesto di dispositivo della stampante.
BOOL DoPreparePrinting(CPrintInfo* pInfo);
Parametri
pInfo
Punta a una CPrintInfo
struttura che descrive il processo di stampa corrente.
Valore restituito
Diverso da zero se la stampa o l'anteprima di stampa può iniziare; 0 se l'operazione è stata annullata.
Osservazioni:
Il comportamento di questa funzione dipende dal fatto che venga chiamato per la stampa o l'anteprima m_bPreview
di stampa (specificato dal membro del pInfo
parametro). Se viene stampato un file, questa funzione richiama la finestra di dialogo Stampa utilizzando i valori nella CPrintInfo
struttura a cui punta; dopo che pInfo
l'utente ha chiuso la finestra di dialogo, la funzione crea un contesto di dispositivo della stampante in base alle impostazioni specificate dall'utente nella finestra di dialogo e restituisce questo contesto di dispositivo tramite il pInfo
parametro . Questo contesto di dispositivo viene usato per stampare il documento.
Se un file viene visualizzato in anteprima, questa funzione crea un contesto di dispositivo della stampante usando le impostazioni correnti della stampante; questo contesto di dispositivo viene usato per simulare la stampante durante l'anteprima.
CView::GetDocument
Chiamare questa funzione per ottenere un puntatore al documento della visualizzazione.
CDocument* GetDocument() const;
Valore restituito
Puntatore all'oggetto CDocument
associato alla visualizzazione. NULL
se la visualizzazione non è collegata a un documento.
Osservazioni:
In questo modo è possibile chiamare le funzioni membro del documento.
CView::IsSelected
Chiamato dal framework per verificare se l'elemento del documento specificato è selezionato.
virtual BOOL IsSelected(const CObject* pDocItem) const;
Parametri
pDocItem
Punta all'elemento del documento sottoposto a test.
Valore restituito
Diverso da zero se l'elemento del documento specificato è selezionato; in caso contrario, 0.
Osservazioni:
L'implementazione predefinita di questa funzione restituisce FALSE
. Eseguire l'override di questa funzione se si implementa la selezione usando CDocItem
oggetti . È necessario eseguire l'override di questa funzione se la visualizzazione contiene elementi OLE.
CView::OnActivateFrame
Chiamato dal framework quando la finestra cornice contenente la visualizzazione viene attivata o disattivata.
virtual void OnActivateFrame(
UINT nState,
CFrameWnd* pFrameWnd);
Parametri
nState
Specifica se la finestra cornice viene attivata o disattivata. Può essere uno dei valori seguenti:
WA_INACTIVE
La finestra cornice viene disattivata.WA_ACTIVE
La finestra cornice viene attivata tramite un metodo diverso da un clic del mouse, ad esempio usando l'interfaccia della tastiera per selezionare la finestra.WA_CLICKACTIVE
La finestra cornice viene attivata da un clic del mouse
pFrameWnd
Puntatore alla finestra cornice da attivare.
Osservazioni:
Eseguire l'override di questa funzione membro se si desidera eseguire un'elaborazione speciale quando la finestra cornice associata alla visualizzazione viene attivata o disattivata. Ad esempio, CFormView
esegue l'override quando salva e ripristina il controllo con stato attivo.
CView::OnActivateView
Chiamato dal framework quando una visualizzazione viene attivata o disattivata.
virtual void OnActivateView(
BOOL bActivate,
CView* pActivateView,
CView* pDeactiveView);
Parametri
bActivate
Indica se la visualizzazione viene attivata o disattivata.
pActivateView
Punta all'oggetto di visualizzazione che viene attivato.
pDeactiveView
Punta all'oggetto di visualizzazione che viene disattivato.
Osservazioni:
L'implementazione predefinita di questa funzione imposta lo stato attivo sulla visualizzazione attivata. Eseguire l'override di questa funzione se si desidera eseguire un'elaborazione speciale quando una visualizzazione viene attivata o disattivata. Ad esempio, se si desidera fornire segnali visivi speciali che distinguono la visualizzazione attiva dalle visualizzazioni inattive, è necessario esaminare il bActivate
parametro e aggiornare l'aspetto della visualizzazione di conseguenza.
I pActivateView
parametri e pDeactiveView
puntano alla stessa visualizzazione se la finestra cornice principale dell'applicazione viene attivata senza alcuna modifica nella visualizzazione attiva, ad esempio se lo stato attivo viene trasferito da un'altra applicazione a questa, anziché da una visualizzazione a un'altra all'interno dell'applicazione o quando si passa da una finestra figlio MDI a un'altra. Ciò consente a una visualizzazione di ri-realizzare la sua tavolozza, se necessario.
Questi parametri differiscono quando CFrameWnd::SetActiveView
viene chiamato con una vista diversa da quella CFrameWnd::GetActiveView
restituita. Questo avviene più spesso con finestre di divisione.
CView::OnBeginPrinting
Chiamata eseguita dal framework all'inizio di un processo di stampa o di anteprima di stampa, dopo la chiamata di OnPreparePrinting
.
virtual void OnBeginPrinting(
CDC* pDC,
CPrintInfo* pInfo);
Parametri
pDC
Punta al contesto di dispositivo stampante.
pInfo
Punta a una CPrintInfo
struttura che descrive il processo di stampa corrente.
Osservazioni:
L'implementazione predefinita di questa funzione non esegue alcuna operazione. Eseguire l'override di questa funzione per allocare risorse GDI, ad esempio penne o tipi di carattere, necessarie specificamente per la stampa. Selezionare gli oggetti GDI nel contesto di dispositivo dall'interno della OnPrint
funzione membro per ogni pagina che li usa. Se si usa lo stesso oggetto visualizzazione per eseguire stampa e visualizzazione su schermo, usare variabili separate per le risorse GDI richieste per ogni visualizzazione. Ciò consente di aggiornare lo schermo durante la stampa.
È anche possibile usare questa funzione per eseguire inizializzazioni che dipendono dalle proprietà del contesto di dispositivo stampante. Ad esempio, il numero di pagine richiesto per stampare il documento può dipendere dalle impostazioni specificate dall'utente nella finestra di dialogo Stampa (come la lunghezza della pagina). In una situazione di questo tipo, non è possibile specificare la lunghezza del OnPreparePrinting
documento nella funzione membro, in cui normalmente si esegue questa operazione. Attendere che il contesto del dispositivo della stampante sia stato creato in base alle impostazioni della finestra di dialogo. OnBeginPrinting
è la prima funzione sottoponibile a override che consente di accedere all'oggetto CDC
che rappresenta il contesto del dispositivo della stampante, in modo da poter impostare la lunghezza del documento da questa funzione. Si noti che se a questo punto la lunghezza del documento non è specificata, durante l'anteprima di stampa non viene visualizzata una barra di scorrimento.
CView::OnDragEnter
Chiamato dal framework quando il mouse entra per la prima volta nell'area non di scorrimento della finestra di destinazione di rilascio.
virtual DROPEFFECT OnDragEnter(
COleDataObject* pDataObject,
DWORD dwKeyState,
CPoint point);
Parametri
pDataObject
Punta all'oggetto COleDataObject
trascinato nell'area di rilascio della visualizzazione.
dwKeyState
Contiene lo stato dei tasti di modifica. Si tratta di una combinazione di qualsiasi numero di elementi seguenti: MK_CONTROL
, MK_SHIFT
, MK_LBUTTON
MK_ALT
, MK_MBUTTON
, e MK_RBUTTON
.
point
Posizione corrente del mouse rispetto all'area client della visualizzazione.
Valore restituito
Valore del DROPEFFECT
tipo enumerato, che indica il tipo di eliminazione che si verificherebbe se l'utente ha eliminato l'oggetto in questa posizione. Il tipo di eliminazione dipende in genere dallo stato della chiave corrente indicato da dwKeyState
. Un mapping standard degli stati di chiave ai DROPEFFECT
valori è:
DROPEFFECT_NONE
Impossibile eliminare l'oggetto dati in questa finestra.DROPEFFECT_LINK
perMK_CONTROL|MK_SHIFT
Crea un collegamento tra l'oggetto e il relativo server.DROPEFFECT_COPY
perMK_CONTROL
Crea una copia dell'oggetto eliminato.DROPEFFECT_MOVE
perMK_ALT
Crea una copia dell'oggetto eliminato ed elimina l'oggetto originale. Si tratta in genere dell'effetto di rilascio predefinito, quando la vista può accettare questo oggetto dati.
Per altre informazioni, vedere l'esempio MFC Advanced Concepts .For more information, see the MFC Advanced Concepts sample OCLIENT
.
Osservazioni:
L'implementazione predefinita consiste nell'eseguire alcuna operazione e restituire DROPEFFECT_NONE
.
Eseguire l'override di questa funzione per prepararsi per le chiamate future alla OnDragOver
funzione membro. Tutti i dati richiesti dall'oggetto dati devono essere recuperati in questo momento per un uso successivo nella OnDragOver
funzione membro. La visualizzazione deve anche essere aggiornata in questo momento per fornire feedback visivo all'utente. Per altre informazioni, vedere l'articolo Trascinare e rilasciare OLE: Implementare una destinazione di rilascio.
CView::OnDragLeave
Chiamato dal framework durante un'operazione di trascinamento quando il mouse viene spostato dall'area di rilascio valida per tale finestra.
virtual void OnDragLeave();
Osservazioni:
Eseguire l'override di questa funzione se la visualizzazione corrente deve pulire eventuali azioni eseguite durante OnDragEnter
o OnDragOver
chiamate, ad esempio rimuovendo qualsiasi feedback dell'utente visivo durante il trascinamento e l'eliminazione dell'oggetto.
CView::OnDragOver
Chiamato dal framework durante un'operazione di trascinamento quando il mouse viene spostato sulla finestra di destinazione della selezione.
virtual DROPEFFECT OnDragOver(
COleDataObject* pDataObject,
DWORD dwKeyState,
CPoint point);
Parametri
pDataObject
Punta all'oggetto COleDataObject
trascinato sulla destinazione di rilascio.
dwKeyState
Contiene lo stato dei tasti di modifica. Si tratta di una combinazione di qualsiasi numero di elementi seguenti: MK_CONTROL
, MK_SHIFT
, MK_LBUTTON
MK_ALT
, MK_MBUTTON
, e MK_RBUTTON
.
point
Posizione corrente del mouse rispetto all'area client di visualizzazione.
Valore restituito
Valore del DROPEFFECT
tipo enumerato, che indica il tipo di eliminazione che si verificherebbe se l'utente ha eliminato l'oggetto in questa posizione. Il tipo di eliminazione dipende spesso dallo stato della chiave corrente, come indicato da dwKeyState
. Un mapping standard degli stati di chiave ai DROPEFFECT
valori è:
DROPEFFECT_NONE
Impossibile eliminare l'oggetto dati in questa finestra.DROPEFFECT_LINK
perMK_CONTROL|MK_SHIFT
Crea un collegamento tra l'oggetto e il relativo server.DROPEFFECT_COPY
perMK_CONTROL
Crea una copia dell'oggetto eliminato.DROPEFFECT_MOVE
perMK_ALT
Crea una copia dell'oggetto eliminato ed elimina l'oggetto originale. Si tratta in genere dell'effetto di rilascio predefinito, quando la vista può accettare l'oggetto dati.
Per altre informazioni, vedere l'esempio MFC Advanced Concepts .For more information, see the MFC Advanced Concepts sample OCLIENT
.
Osservazioni:
L'implementazione predefinita consiste nell'eseguire alcuna operazione e restituire DROPEFFECT_NONE
.
Eseguire l'override di questa funzione per fornire all'utente feedback visivo durante l'operazione di trascinamento. Poiché questa funzione viene chiamata in modo continuo, qualsiasi codice contenuto in esso deve essere ottimizzato il più possibile. Per altre informazioni, vedere l'articolo Trascinare e rilasciare OLE: Implementare una destinazione di rilascio.
CView::OnDragScroll
Chiamato dal framework prima di chiamare OnDragEnter
o OnDragOver
per determinare se il punto si trova nell'area di scorrimento.
virtual DROPEFFECT OnDragScroll(
DWORD dwKeyState,
CPoint point);
Parametri
dwKeyState
Contiene lo stato dei tasti di modifica. Si tratta di una combinazione di qualsiasi numero di elementi seguenti: MK_CONTROL
, MK_SHIFT
, MK_LBUTTON
MK_ALT
, MK_MBUTTON
, e MK_RBUTTON
.
point
Contiene la posizione del cursore, espressa in pixel, rispetto allo schermo.
Valore restituito
Valore del DROPEFFECT
tipo enumerato, che indica il tipo di eliminazione che si verificherebbe se l'utente ha eliminato l'oggetto in questa posizione. Il tipo di eliminazione dipende in genere dallo stato della chiave corrente indicato da dwKeyState
. Un mapping standard degli stati di chiave ai DROPEFFECT
valori è:
DROPEFFECT_NONE
Impossibile eliminare l'oggetto dati in questa finestra.DROPEFFECT_LINK
perMK_CONTROL|MK_SHIFT
Crea un collegamento tra l'oggetto e il relativo server.DROPEFFECT_COPY
perMK_CONTROL
Crea una copia dell'oggetto eliminato.DROPEFFECT_MOVE
perMK_ALT
Crea una copia dell'oggetto eliminato ed elimina l'oggetto originale.DROPEFFECT_SCROLL
Indica che un'operazione di trascinamento dello scorrimento sta per verificarsi o si sta verificando nella visualizzazione di destinazione.
Per altre informazioni, vedere l'esempio MFC Advanced Concepts .For more information, see the MFC Advanced Concepts sample OCLIENT
.
Osservazioni:
Eseguire l'override di questa funzione quando si vuole fornire un comportamento speciale per questo evento. L'implementazione predefinita scorre automaticamente le finestre quando il cursore viene trascinato nell'area di scorrimento predefinita all'interno del bordo di ogni finestra. Per altre informazioni, vedere l'articolo Trascinare e rilasciare OLE: Implementare una destinazione di rilascio.
CView::OnDraw
Chiamato dal framework per eseguire il rendering di un'immagine del documento.
virtual void OnDraw(CDC* pDC) = 0;
Parametri
pDC
Punta al contesto di dispositivo da usare per il rendering di un'immagine del documento.
Osservazioni:
Il framework chiama questa funzione per eseguire la visualizzazione dello schermo, la stampa e l'anteprima di stampa e passa un contesto di dispositivo diverso in ogni caso. Non vi è nessuna implementazione predefinita.
È necessario eseguire l'override di questa funzione per visualizzare la visualizzazione del documento. È possibile effettuare chiamate GDI (Graphic Device Interface) usando l'oggetto CDC
a cui punta il pDC
parametro . È possibile selezionare le risorse GDI, ad esempio penne o tipi di carattere, nel contesto del dispositivo prima di disegnare e quindi deselezionarle in seguito. Spesso il codice di disegno può essere indipendente dal dispositivo; ovvero non richiede informazioni sul tipo di dispositivo che visualizza l'immagine.
Per ottimizzare il disegno, chiamare la RectVisible
funzione membro del contesto di dispositivo per determinare se verrà disegnato un determinato rettangolo. Se è necessario distinguere tra la visualizzazione dello schermo normale e la stampa, chiamare la IsPrinting
funzione membro del contesto di dispositivo.
CView::OnDrop
Chiamato dal framework quando l'utente rilascia un oggetto dati su una destinazione di rilascio valida.
virtual BOOL OnDrop(
COleDataObject* pDataObject,
DROPEFFECT dropEffect,
CPoint point);
Parametri
pDataObject
Punta all'oggetto COleDataObject
che viene eliminato nella destinazione di rilascio.
dropEffect
Effetto di rilascio richiesto dall'utente.
DROPEFFECT_COPY
Crea una copia dell'oggetto dati da eliminare.DROPEFFECT_MOVE
Sposta l'oggetto dati nella posizione corrente del mouse.DROPEFFECT_LINK
Crea un collegamento tra un oggetto dati e il relativo server.
point
Posizione corrente del mouse rispetto all'area client di visualizzazione.
Valore restituito
Diverso da zero se il calo ha avuto esito positivo; in caso contrario, 0.
Osservazioni:
L'implementazione predefinita non esegue alcuna operazione e restituisce FALSE
.
Eseguire l'override di questa funzione per implementare l'effetto di un rilascio OLE nell'area client della visualizzazione. L'oggetto dati può essere esaminato tramite pDataObject
per i formati di dati degli Appunti e i dati rilasciati nel punto specificato.
Nota
Il framework non chiama questa funzione se in questa classe di visualizzazione è presente un override OnDropEx
.
CView::OnDropEx
Chiamato dal framework quando l'utente rilascia un oggetto dati su una destinazione di rilascio valida.
virtual DROPEFFECT OnDropEx(
COleDataObject* pDataObject,
DROPEFFECT dropDefault,
DROPEFFECT dropList,
CPoint point);
Parametri
pDataObject
Punta all'oggetto COleDataObject
che viene eliminato nella destinazione di rilascio.
dropDefault
Effetto scelto dall'utente per l'operazione di rilascio predefinita in base allo stato della chiave corrente. Potrebbe essere DROPEFFECT_NONE
. Gli effetti di rilascio sono descritti nella sezione Osservazioni.
dropList
Elenco degli effetti di rilascio supportati dall'origine di rilascio. I valori dell'effetto drop possono essere combinati usando l'operazione OR bit per bit ( |
). Gli effetti di rilascio sono descritti nella sezione Osservazioni.
point
Posizione corrente del mouse rispetto all'area client di visualizzazione.
Valore restituito
Effetto di rilascio risultante dal tentativo di rilascio nella posizione specificata da point
. Deve essere uno dei valori indicati da dropEffectList
. Gli effetti di rilascio sono descritti nella sezione Osservazioni.
Osservazioni:
L'implementazione predefinita consiste nel non eseguire alcuna operazione e restituire un valore fittizio ( -1 ) per indicare che il framework deve chiamare il OnDrop
gestore.
Eseguire l'override di questa funzione per implementare l'effetto di trascinamento del pulsante destro del mouse e rilascio. Il trascinamento del pulsante destro del mouse e la selezione visualizza in genere un menu di scelte quando viene rilasciato il pulsante destro del mouse.
L'override di OnDropEx
deve eseguire una query per il pulsante destro del mouse. È possibile chiamare GetKeyState
o archiviare lo stato del pulsante destro del mouse dal OnDragEnter
gestore.
Se il pulsante destro del mouse è in basso, l'override dovrebbe visualizzare un menu popup che offre il supporto degli effetti di rilascio dall'origine di rilascio.
Esaminare
dropList
per determinare gli effetti di rilascio supportati dall'origine di rilascio. Abilitare solo queste azioni nel menu popup.Usare
SetMenuDefaultItem
per impostare l'azione predefinita in base adropDefault
.Infine, eseguire l'azione indicata dalla selezione dell'utente dal menu popup.
Se il pulsante destro del mouse non è in basso, l'override deve elaborare questa operazione come richiesta standard di rilascio. Usare l'effetto di rilascio specificato in
dropDefault
. In alternativa, l'override può restituire il valore fittizio (-1) per indicare cheOnDrop
gestirà questa operazione di rilascio.
Utilizzare pDataObject
per esaminare il COleDataObject
formato dati degli Appunti e i dati eliminati nel punto specificato.
Gli effetti di rilascio descrivono l'azione associata a un'operazione di rilascio. Vedere l'elenco seguente di effetti di rilascio:
DROPEFFECT_NONE
Una goccia non sarebbe consentita.DROPEFFECT_COPY
Verrà eseguita un'operazione di copia.DROPEFFECT_MOVE
Verrà eseguita un'operazione di spostamento.DROPEFFECT_LINK
Verrà stabilito un collegamento dai dati eliminati ai dati originali.DROPEFFECT_SCROLL
Indica che un'operazione di trascinamento dello scorrimento sta per verificarsi o si sta verificando nella destinazione.
Per altre informazioni sull'impostazione del comando di menu predefinito, vedere SetMenuDefaultItem
in Windows SDK e CMenu::GetSafeHmenu
in questo volume.
CView::OnEndPrinting
Chiamato dal framework dopo che un documento è stato stampato o visualizzato in anteprima.
virtual void OnEndPrinting(
CDC* pDC,
CPrintInfo* pInfo);
Parametri
pDC
Punta al contesto di dispositivo stampante.
pInfo
Punta a una CPrintInfo
struttura che descrive il processo di stampa corrente.
Osservazioni:
L'implementazione predefinita di questa funzione non esegue alcuna operazione. Eseguire l'override di questa funzione per liberare tutte le risorse GDI allocate nella OnBeginPrinting
funzione membro.
CView::OnEndPrintPreview
Chiamato dal framework quando l'utente esce dalla modalità anteprima di stampa.
virtual void OnEndPrintPreview(
CDC* pDC,
CPrintInfo* pInfo,
POINT point,
CPreviewView* pView);
Parametri
pDC
Punta al contesto di dispositivo stampante.
pInfo
Punta a una CPrintInfo
struttura che descrive il processo di stampa corrente.
point
Specifica il punto nella pagina visualizzata per l'ultima volta in modalità di anteprima.
pView
Punta all'oggetto di visualizzazione utilizzato per l'anteprima.
Osservazioni:
L'implementazione predefinita di questa funzione chiama la OnEndPrinting
funzione membro e ripristina lo stato della finestra cornice principale in cui si trovava prima dell'inizio dell'anteprima di stampa. Eseguire l'override di questa funzione per eseguire un'elaborazione speciale quando viene terminata la modalità di anteprima. Ad esempio, se si desidera mantenere la posizione dell'utente nel documento quando si passa dalla modalità di anteprima alla modalità di visualizzazione normale, è possibile scorrere fino alla posizione descritta dal point
parametro e dal m_nCurPage
membro della CPrintInfo
struttura a cui punta il pInfo
parametro.
Chiamare sempre la versione della classe base di OnEndPrintPreview
dall'override, in genere alla fine della funzione.
CView::OnInitialUpdate
Chiamato dal framework dopo che la vista è stata collegata per la prima volta al documento, ma prima della visualizzazione viene inizialmente visualizzata.
virtual void OnInitialUpdate();
Osservazioni:
L'implementazione predefinita di questa funzione chiama la OnUpdate
funzione membro senza informazioni di hint, ovvero usando i valori predefiniti di 0 per il lHint
parametro e NULL
per il pHint
parametro . Eseguire l'override di questa funzione per eseguire un'inizializzazione monouso che richiede informazioni sul documento. Ad esempio, se l'applicazione dispone di documenti di dimensioni fisse, è possibile usare questa funzione per inizializzare i limiti di scorrimento di una visualizzazione in base alle dimensioni del documento. Se l'applicazione supporta documenti di dimensioni variabili, usare OnUpdate
per aggiornare i limiti di scorrimento ogni volta che il documento cambia.
CView::OnPrepareDC
Chiamato dal framework prima che venga chiamata la funzione membro per la OnDraw
visualizzazione dello schermo e prima che venga chiamata la funzione membro per ogni pagina durante la OnPrint
stampa o l'anteprima di stampa.
virtual void OnPrepareDC(
CDC* pDC,
CPrintInfo* pInfo = NULL);
Parametri
pDC
Punta al contesto di dispositivo da usare per il rendering di un'immagine del documento.
pInfo
Punta a una CPrintInfo
struttura che descrive il processo di stampa corrente se OnPrepareDC
viene chiamato per la stampa o l'anteprima di stampa. Il m_nCurPage
membro specifica la pagina che sta per essere stampata. Questo parametro è NULL
se OnPrepareDC
viene chiamato per la visualizzazione dello schermo.
Osservazioni:
L'implementazione predefinita di questa funzione non esegue alcuna operazione se viene chiamata la funzione per la visualizzazione dello schermo. Tuttavia, questa funzione viene sottoposta a override nelle classi derivate, ad esempio CScrollView
, per modificare gli attributi del contesto di dispositivo. Di conseguenza, è necessario chiamare sempre l'implementazione della classe base all'inizio dell'override.
Se la funzione viene chiamata per la stampa, l'implementazione predefinita esamina le informazioni sulla pagina archiviate nel pInfo
parametro . Se la lunghezza del documento non è stata specificata, OnPrepareDC
si presuppone che il documento sia lungo una pagina e arresti il ciclo di stampa dopo la stampa di una pagina. La funzione arresta il ciclo di stampa impostando il m_bContinuePrinting
membro della struttura su FALSE
.
Eseguire l'override OnPrepareDC
per uno dei motivi seguenti:
Per modificare gli attributi del contesto di dispositivo in base alle esigenze per la pagina specificata. Ad esempio, se è necessario impostare la modalità di mapping o altre caratteristiche del contesto di dispositivo, eseguire questa operazione in questa funzione.
Per eseguire l'impaginazione in fase di stampa. In genere si specifica la lunghezza del documento all'inizio della stampa, utilizzando la
OnPreparePrinting
funzione membro. Tuttavia, se non si conosce in anticipo per quanto tempo il documento è (ad esempio, quando si stampa un numero non determinito di record da un database), eseguire l'overrideOnPrepareDC
per verificare la fine del documento durante la stampa. Quando non è più presente alcun documento da stampare, impostare ilm_bContinuePrinting
membro dellaCPrintInfo
struttura suFALSE
.Per inviare codici di escape alla stampante in base alla pagina. Per inviare codici di escape da
OnPrepareDC
, chiamare laEscape
funzione membro delpDC
parametro .
Chiamare la versione della classe base di OnPrepareDC
all'inizio dell'override.
Esempio
void CMyView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
CView::OnPrepareDC(pDC, pInfo);
// If we are printing, set the mapmode and the window
// extent properly, then set viewport extent. Use the
// SetViewportOrg member function in the CDC class to
// move the viewport origin to the center of the view.
if (pDC->IsPrinting()) // Is the DC a printer DC.
{
CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ISOTROPIC);
CSize ptOldWinExt = pDC->SetWindowExt(1000, 1000);
ASSERT(ptOldWinExt.cx != 0 && ptOldWinExt.cy != 0);
CSize ptOldViewportExt = pDC->SetViewportExt(rect.Width(), -rect.Height());
ASSERT(ptOldViewportExt.cx != 0 && ptOldViewportExt.cy != 0);
CPoint ptOldOrigin = pDC->SetViewportOrg(rect.Width() / 2, rect.Height() / 2);
}
}
CView::OnPreparePrinting
Chiamato dal framework prima che un documento venga stampato o visualizzato in anteprima.
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
Parametri
pInfo
Punta a una CPrintInfo
struttura che descrive il processo di stampa corrente.
Valore restituito
Diverso da zero per iniziare la stampa; 0 se il processo di stampa è stato annullato.
Osservazioni:
L'implementazione predefinita non esegue alcuna operazione.
È necessario eseguire l'override di questa funzione per abilitare la stampa e l'anteprima di stampa. Chiamare la DoPreparePrinting
funzione membro, passando il parametro e quindi restituirne il pInfo
valore restituito. DoPreparePrinting
Visualizza la finestra di dialogo Stampa e crea un contesto di dispositivo della stampante. Se si desidera inizializzare la finestra di dialogo Stampa con valori diversi dai valori predefiniti, assegnare valori ai membri di pInfo
. Ad esempio, se si conosce la lunghezza del documento, passare il valore alla funzione membro SetMaxPage di prima di pInfo
chiamare DoPreparePrinting
. Questo valore viene visualizzato nella casella A: nella parte Intervallo della finestra di dialogo Stampa.
DoPreparePrinting
non visualizza la finestra di dialogo Stampa per un processo di anteprima. Se si desidera ignorare la finestra di dialogo Stampa per un processo di stampa, verificare che il m_bPreview
membro di pInfo
sia FALSE
e quindi impostarlo su TRUE
prima di passarlo a DoPreparePrinting
; ripristinarlo FALSE
in un secondo momento.
Se è necessario eseguire inizializzazioni che richiedono l'accesso all'oggetto CDC
che rappresenta il contesto del dispositivo della stampante ( ad esempio, se è necessario conoscere le dimensioni della pagina prima di specificare la lunghezza del documento), eseguire l'override della OnBeginPrinting
funzione membro.
Se si desidera impostare il valore dei m_nNumPreviewPages
membri o m_strPageDesc
del pInfo
parametro , eseguire questa operazione dopo aver chiamato DoPreparePrinting
. La DoPreparePrinting
funzione membro imposta m_nNumPreviewPages
il valore trovato nell'oggetto dell'applicazione. File INI e imposta m_strPageDesc
il valore predefinito.
Esempio
Eseguire l'override OnPreparePrinting
e chiamare DoPreparePrinting
dall'override in modo che il framework visualizzi una finestra di dialogo Stampa e crei automaticamente un controller di dominio della stampante.
BOOL CMyEditView::OnPreparePrinting(CPrintInfo* pInfo)
{
return CEditView::DoPreparePrinting(pInfo);
}
Se si conosce il numero di pagine contenute nel documento, impostare la pagina massima in OnPreparePrinting
prima di chiamare DoPreparePrinting
. Il framework visualizzerà il numero di pagina massimo nella casella "a" della finestra di dialogo Stampa.
BOOL CExampleView::OnPreparePrinting(CPrintInfo* pInfo)
{
//The document has 2 pages.
pInfo->SetMaxPage(2);
return CView::DoPreparePrinting(pInfo);
}
CView::OnPrint
Chiamato dal framework per stampare o visualizzare in anteprima una pagina del documento.
virtual void OnPrint(
CDC* pDC,
CPrintInfo* pInfo);
Parametri
pDC
Punta al contesto di dispositivo stampante.
pInfo
Punta a una CPrintInfo
struttura che descrive il processo di stampa corrente.
Osservazioni:
Per ogni pagina stampata, il framework chiama questa funzione immediatamente dopo aver chiamato la OnPrepareDC
funzione membro. La pagina stampata viene specificata dal m_nCurPage
membro della CPrintInfo
struttura a cui pInfo
punta. L'implementazione predefinita chiama la OnDraw
funzione membro e la passa al contesto del dispositivo della stampante.
Eseguire l'override di questa funzione per uno dei motivi seguenti:
Per consentire la stampa di documenti a più pagine. Eseguire il rendering solo della parte del documento corrispondente alla pagina attualmente stampata. Se si usa
OnDraw
per eseguire il rendering, è possibile modificare l'origine del riquadro di visualizzazione in modo che venga stampata solo la parte appropriata del documento.Per fare in modo che l'immagine stampata sia diversa dall'immagine dello schermo, ovvero se l'applicazione non è WYSIWYG. Invece di passare il contesto del dispositivo della stampante a
OnDraw
, usare il contesto di dispositivo per eseguire il rendering di un'immagine usando attributi non visualizzati sullo schermo.Se sono necessarie risorse GDI per la stampa non usate per la visualizzazione dello schermo, selezionarle nel contesto del dispositivo prima di disegnare e deselezionarle in seguito. Queste risorse GDI devono essere allocate in
OnBeginPrinting
e rilasciate inOnEndPrinting
.Per implementare intestazioni o piè di pagina. È comunque possibile usare
OnDraw
per eseguire il rendering limitando l'area su cui è possibile stampare.
Si noti che il m_rectDraw
membro del pInfo
parametro descrive l'area stampabile della pagina in unità logiche.
Non chiamare OnPrepareDC
nell'override di . Il framework chiama OnPrepareDC
automaticamente prima di OnPrint
chiamare OnPrint
.
Esempio
Di seguito è riportato uno scheletro per una funzione sottoposta a OnPrint
override:
void CMyView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
UNREFERENCED_PARAMETER(pInfo);
// Print headers and/or footers, if desired.
// Find portion of document corresponding to pInfo->m_nCurPage.
OnDraw(pDC);
}
Per un altro esempio, vedere CRichEditView::PrintInsideRect
.
CView::OnScroll
Chiamato dal framework per determinare se lo scorrimento è possibile.
virtual BOOL OnScroll(
UINT nScrollCode,
UINT nPos,
BOOL bDoScroll = TRUE);
Parametri
nScrollCode
Codice a barre di scorrimento che indica la richiesta di scorrimento dell'utente. Questo parametro è composto da due parti: un byte di ordine basso, che determina il tipo di scorrimento che si verifica orizzontalmente e un byte di ordine elevato, che determina il tipo di scorrimento che si verifica verticalmente:
SB_BOTTOM
Scorre verso il basso.SB_LINEDOWN
Scorre una riga verso il basso.SB_LINEUP
Scorre una riga verso l'alto.SB_PAGEDOWN
Scorre una pagina verso il basso.SB_PAGEUP
Scorre una pagina verso l'alto.SB_THUMBTRACK
Trascina la casella di scorrimento nella posizione specificata. La posizione corrente è specificata innPos
.SB_TOP
Scorre verso l'alto.
nPos
Contiene la posizione corrente della casella di scorrimento se il codice della barra di scorrimento è SB_THUMBTRACK
; in caso contrario, non viene utilizzato. A seconda dell'intervallo di scorrimento iniziale, nPos
può essere negativo e deve essere eseguito il cast a un oggetto int
, se necessario.
bDoScroll
Determina se eseguire effettivamente l'azione di scorrimento specificata. Se TRUE
, lo scorrimento dovrebbe avvenire; se FALSE
, lo scorrimento non dovrebbe verificarsi.
Valore restituito
Se bDoScroll
è TRUE
e la visualizzazione è stata effettivamente scorrere, restituire un valore diverso da zero; in caso contrario, 0. Se bDoScroll
è FALSE
, restituire il valore restituito se bDoScroll
fosse TRUE
, anche se non si esegue effettivamente lo scorrimento.
Osservazioni:
In un caso questa funzione viene chiamata dal framework con bDoScroll
impostato su TRUE
quando la vista riceve un messaggio della barra di scorrimento. In questo caso, è consigliabile scorrere effettivamente la visualizzazione. Nell'altro caso questa funzione viene chiamata con bDoScroll
impostato su FALSE
quando un elemento OLE viene inizialmente trascinato nell'area di scorrimento automatico di una destinazione di rilascio prima che venga effettivamente eseguito lo scorrimento. In questo caso, non è consigliabile scorrere effettivamente la visualizzazione.
CView::OnScrollBy
Chiamato dal framework quando l'utente visualizza un'area oltre la visualizzazione corrente del documento, trascinando un elemento OLE sui bordi correnti della visualizzazione o modificando le barre di scorrimento verticali o orizzontali.
virtual BOOL OnScrollBy(
CSize sizeScroll,
BOOL bDoScroll = TRUE);
Parametri
sizeScroll
Numero di pixel scorrevoli orizzontalmente e verticalmente.
bDoScroll
Determina se si verifica lo scorrimento della visualizzazione. Se TRUE
, lo scorrimento avviene; se FALSE
, lo scorrimento non si verifica.
Valore restituito
Diverso da zero se la vista è stata in grado di scorrere; in caso contrario, 0.
Osservazioni:
Nelle classi derivate questo metodo controlla se la visualizzazione è scorrevole nella direzione richiesta dall'utente e quindi aggiorna la nuova area, se necessario. Questa funzione viene chiamata automaticamente da CWnd::OnHScroll
e CWnd::OnVScroll
per eseguire la richiesta di scorrimento effettiva.
L'implementazione predefinita di questo metodo non modifica la visualizzazione, ma se non viene chiamata, la visualizzazione non scorrerà in una CScrollView
classe derivata da .
Se la larghezza o l'altezza del documento supera i 32767 pixel, lo scorrimento oltre 32767 avrà esito negativo perché OnScrollBy
viene chiamato con un argomento non valido sizeScroll
.
CView::OnUpdate
Chiamato dal framework dopo la modifica del documento della visualizzazione; questa funzione viene chiamata da CDocument::UpdateAllViews
e consente alla visualizzazione di aggiornarne la visualizzazione in modo da riflettere tali modifiche.
virtual void OnUpdate(
CView* pSender,
LPARAM lHint,
CObject* pHint);
Parametri
pSender
Punta alla visualizzazione che ha modificato il documento o NULL
se devono essere aggiornate tutte le visualizzazioni.
lHint
Contiene informazioni sulle modifiche.
pHint
Punta a un oggetto che archivia le informazioni sulle modifiche.
Osservazioni:
Viene chiamato anche dall'implementazione predefinita di OnInitialUpdate
. L'implementazione predefinita invalida l'intera area client, contrassegnandola per disegnare quando viene ricevuto il messaggio successivo WM_PAINT
. Eseguire l'override di questa funzione se si desidera aggiornare solo le aree mappate alle parti modificate del documento. A tale scopo, è necessario passare informazioni sulle modifiche usando i parametri hint.
Per usare lHint
, definire valori di hint speciali, in genere una maschera di bit o un tipo enumerato e fare in modo che il documento passi uno di questi valori. Per usare pHint
, derivare una classe hint da CObject
e fare in modo che il documento passi un puntatore a un oggetto hint. Quando si esegue l'override di OnUpdate
, utilizzare la CObject::IsKindOf
funzione membro per determinare il tipo di runtime dell'oggetto hint.
In genere non è consigliabile eseguire alcun disegno direttamente da OnUpdate
. Determinare invece il rettangolo che descrive, nelle coordinate del dispositivo, l'area che richiede l'aggiornamento; passare questo rettangolo a CWnd::InvalidateRect
. Ciò fa sì che il disegno si verifichi alla successiva ricezione di un WM_PAINT
messaggio.
Se lHint
è 0 e pHint
è NULL
, il documento ha inviato una notifica di aggiornamento generica. Se una visualizzazione riceve una notifica di aggiornamento generica o se non riesce a decodificare gli hint, deve invalidare l'intera area client.
Vedi anche
Esempio MFC MDIDOCVW
CWnd
Classe
Grafico della gerarchia
CWnd
Classe
CFrameWnd
Classe
CSplitterWnd
Classe
CDC
Classe
CDocTemplate
Classe
CDocument
Classe