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

Name Descrizione
CView::CView Costruisce un oggetto CView.

Metodi pubblici

Name 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

Name 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 CScrollViewa , 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 un CEditView 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 CPreviewViewfunzioni 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 CViewdi , vedere Architettura e stampa di documenti/viste. Per altre informazioni sulla personalizzazione dell'anteprima di stampa, vedere la nota tecnica 30 .

Gerarchia di ereditarietà

CObject

CCmdTarget

CWnd

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_LBUTTONMK_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 per MK_CONTROL|MK_SHIFT Crea un collegamento tra l'oggetto e il relativo server.

  • DROPEFFECT_COPY per MK_CONTROL Crea una copia dell'oggetto eliminato.

  • DROPEFFECT_MOVE per MK_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_LBUTTONMK_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 per MK_CONTROL|MK_SHIFT Crea un collegamento tra l'oggetto e il relativo server.

  • DROPEFFECT_COPY per MK_CONTROL Crea una copia dell'oggetto eliminato.

  • DROPEFFECT_MOVE per MK_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_LBUTTONMK_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 per MK_CONTROL|MK_SHIFT Crea un collegamento tra l'oggetto e il relativo server.

  • DROPEFFECT_COPY per MK_CONTROL Crea una copia dell'oggetto eliminato.

  • DROPEFFECT_MOVE per MK_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 a dropDefault.

    • 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 che OnDrop 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'override OnPrepareDC per verificare la fine del documento durante la stampa. Quando non è più presente alcun documento da stampare, impostare il m_bContinuePrinting membro della CPrintInfo struttura su FALSE.

  • Per inviare codici di escape alla stampante in base alla pagina. Per inviare codici di escape da OnPrepareDC, chiamare la Escape funzione membro del pDC 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 in OnEndPrinting.

  • 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 OnPrintchiamare 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 in nPos.

  • 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 CScrollViewclasse 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