CView-Klasse

Stellt die grundlegende Funktionalität für benutzerdefinierte Ansichtsklassen bereit.

Syntax

class AFX_NOVTABLE CView : public CWnd

Member

Geschützte Konstruktoren

Name Beschreibung
CView::CView Erstellt ein CView-Objekt.

Öffentliche Methoden

Name Beschreibung
CView::DoPreparePrinting Zeigt das Dialogfeld "Drucken" an und erstellt den Kontext des Druckergeräts. aufrufen, wenn die OnPreparePrinting Memberfunktion überschrieben wird.
CView::GetDocument Gibt das dokument zurück, das der Ansicht zugeordnet ist.
CView::IsSelected Überprüft, ob ein Dokumentelement ausgewählt ist. Erforderlich für DIE OLE-Unterstützung.
CView::OnDragEnter Wird aufgerufen, wenn ein Element zuerst in den Drag-and-Drop-Bereich einer Ansicht gezogen wird.
CView::OnDragLeave Wird aufgerufen, wenn ein gezogenes Element den Drag-and-Drop-Bereich einer Ansicht verlässt.
CView::OnDragOver Wird aufgerufen, wenn ein Element über den Drag-and-Drop-Bereich einer Ansicht gezogen wird.
CView::OnDragScroll Wird aufgerufen, um zu bestimmen, ob der Cursor in den Bildlaufbereich des Fensters gezogen wird.
CView::OnDrop Wird aufgerufen, wenn ein Element in den Drag-and-Drop-Bereich einer Ansicht, Standardhandler, abgelegt wurde.
CView::OnDropEx Wird aufgerufen, wenn ein Element in den Drag-and-Drop-Bereich einer Ansicht, primären Handler, abgelegt wurde.
CView::OnInitialUpdate Wird aufgerufen, nachdem eine Ansicht zuerst an ein Dokument angefügt wurde.
CView::OnPrepareDC Wird aufgerufen, bevor die Memberfunktion für die OnDraw Bildschirmanzeige aufgerufen wird oder die OnPrint Memberfunktion zum Drucken oder Drucken der Seitenansicht aufgerufen wird.
CView::OnScroll Wird aufgerufen, wenn OLE-Elemente über die Rahmen der Ansicht hinaus gezogen werden.
CView::OnScrollBy Wird aufgerufen, wenn eine Ansicht mit aktiven direkten OLE-Elementen gescrollt wird.

Geschützte Methoden

Name Beschreibung
CView::OnActivateFrame Wird aufgerufen, wenn das Rahmenfenster, das die Ansicht enthält, aktiviert oder deaktiviert wird.
CView::OnActivateView Wird aufgerufen, wenn eine Ansicht aktiviert wird.
CView::OnBeginPrinting Wird aufgerufen, wenn ein Druckauftrag beginnt; außer Kraft setzen, um GDI-Ressourcen (Graphics Device Interface) zuzuweisen.
CView::OnDraw Wird aufgerufen, um ein Bild des Dokuments für die Bildschirmanzeige, das Drucken oder die Seitenvorschau zu rendern. Implementierung erforderlich.
CView::OnEndPrinting Wird aufgerufen, wenn ein Druckauftrag endet; außer Kraft setzen, um GDI-Ressourcen zuzuordnen.
CView::OnEndPrintPreview Wird aufgerufen, wenn der Vorschaumodus beendet wird.
CView::OnPreparePrinting Wird aufgerufen, bevor ein Dokument gedruckt oder in der Vorschau angezeigt wird; Außerkraftsetzung zum Initialisieren des Dialogfelds "Drucken".
CView::OnPrint Wird aufgerufen, um eine Seite des Dokuments zu drucken oder eine Vorschau anzuzeigen.
CView::OnUpdate Wird aufgerufen, um eine Ansicht zu benachrichtigen, dass das Dokument geändert wurde.

Hinweise

Eine Ansicht ist an ein Dokument angefügt und fungiert als Vermittler zwischen dem Dokument und dem Benutzer: Die Ansicht rendert ein Bild des Dokuments auf dem Bildschirm oder Drucker und interpretiert benutzereingaben als Vorgänge auf dem Dokument.

Eine Ansicht ist ein untergeordnetes Element eines Rahmenfensters. Mehr als eine Ansicht kann ein Framefenster gemeinsam nutzen, wie bei einem Teilerfenster. Die Beziehung zwischen einer Ansichtsklasse, einer Framefensterklasse und einer Dokumentklasse wird von einem CDocTemplate Objekt erstellt. Wenn der Benutzer ein neues Fenster öffnet oder ein vorhandenes Fenster aufteilt, erstellt das Framework eine neue Ansicht und fügt es an das Dokument an.

Eine Ansicht kann nur einem Dokument zugeordnet werden, aber ein Dokument kann mehrere Ansichten gleichzeitig angefügt haben, z. B. wenn das Dokument in einem Teilerfenster oder in mehreren untergeordneten Fenstern in einer MDI-Anwendung (Multiple Document Interface) angezeigt wird. Ihre Anwendung kann verschiedene Arten von Ansichten für einen bestimmten Dokumenttyp unterstützen. Beispielsweise kann ein Textverarbeitungsprogramm sowohl eine vollständige Textansicht eines Dokuments als auch eine Gliederungsansicht bereitstellen, die nur die Abschnittsüberschriften anzeigt. Diese verschiedenen Arten von Ansichten können in separaten Rahmenfenstern oder in separaten Fensterbereichen eines einzelnen Framefensters platziert werden, wenn Sie ein Teilerfenster verwenden.

Eine Ansicht kann für die Behandlung verschiedener Eingabetypen verantwortlich sein, z. B. Tastatureingabe, Mauseingabe oder Eingabe über Drag-and-Drop sowie Befehle aus Menüs, Symbolleisten oder Bildlaufleisten. Eine Ansicht empfängt Befehle, die durch das Rahmenfenster weitergeleitet werden. Wenn die Ansicht keinen bestimmten Befehl behandelt, leitet sie den Befehl an das zugeordnete Dokument weiter. Wie alle Befehlsziele verarbeitet eine Ansicht Nachrichten über eine Nachrichtenzuordnung.

Die Ansicht ist dafür verantwortlich, die Daten des Dokuments anzuzeigen und zu ändern, aber nicht zum Speichern. Das Dokument stellt die Ansicht mit den erforderlichen Details zu ihren Daten bereit. Sie können die Ansicht direkt auf die Datenmember des Dokuments zugreifen lassen, oder Sie können Memberfunktionen in der Dokumentklasse bereitstellen, damit die Ansichtsklasse aufgerufen werden kann.

Wenn sich die Daten eines Dokuments ändern, ruft die für die Änderungen zuständige Ansicht in der Regel die CDocument::UpdateAllViews Funktion für das Dokument auf, wodurch alle anderen Ansichten durch Aufrufen der OnUpdate Memberfunktion für jedes Dokument benachrichtigt werden. Die Standardimplementierung von OnUpdate Ungültigkeit des gesamten Clientbereichs der Ansicht. Sie können sie außer Kraft setzen, um nur die Regionen des Clientbereichs zu ungültig zu machen, die den geänderten Teilen des Dokuments zugeordnet sind.

Um eine Klasse zu verwenden CView, leiten Sie eine Klasse davon ab, und implementieren Sie die Memberfunktion zum Ausführen der OnDraw Bildschirmanzeige. Sie können auch zum Ausführen der Druck- und Druckvorschau verwenden OnDraw . Das Framework behandelt die Druckschleife zum Drucken und Anzeigen einer Vorschau ihres Dokuments.

Eine Ansicht behandelt Bildlaufleistenmeldungen mit den CWnd::OnHScroll Funktionen und CWnd::OnVScroll Memberfunktionen. Sie können die Behandlung von Bildlaufleistennachrichten in diesen Funktionen implementieren, oder Sie können die CView abgeleitete Klasse CScrollView verwenden, um den Bildlauf für Sie zu verarbeiten.

Darüber hinaus CScrollViewstellt die Microsoft Foundation Class Library neun weitere Klassen bereit, die von CView:

  • CCtrlView, eine Ansicht, die die Verwendung von Dokumenten ermöglicht – Ansichtsarchitektur mit Struktur-, Listen- und Rich-Edit-Steuerelementen.

  • CDaoRecordView, eine Ansicht, in der Datenbankdatensätze in Dialogfeld-Steuerelementen angezeigt werden.

  • CEditView, eine Ansicht, die einen einfachen mehrteiligen Text-Editor bereitstellt. Sie können ein CEditView Objekt als Steuerelement in einem Dialogfeld sowie eine Ansicht in einem Dokument verwenden.

  • CFormView, eine bildlauffähige Ansicht, die Dialogfeld-Steuerelemente enthält und auf einer Dialogvorlagenressource basiert.

  • CListView, eine Ansicht, die die Verwendung von Dokumenten ermöglicht – Ansichtsarchitektur mit Listensteuerelementen.

  • CRecordView, eine Ansicht, in der Datenbankdatensätze in Dialogfeld-Steuerelementen angezeigt werden.

  • CRichEditView, eine Ansicht, die die Verwendung von Dokumenten zulässt – Ansichtsarchitektur mit umfangreichen Bearbeitungssteuerelementen.

  • CScrollView, eine Ansicht, die automatisch Bildlaufunterstützung bietet.

  • CTreeView, eine Ansicht, die die Verwendung von Dokumenten ermöglicht – Ansichtsarchitektur mit Struktursteuerelementen.

Die CView Klasse verfügt auch über eine abgeleitete Implementierungsklasse namens CPreviewView, die vom Framework zum Ausführen der Seitenansicht verwendet wird. Diese Klasse bietet Unterstützung für die Features, die für das Druckvorschaufenster einzigartig sind, z. B. eine Symbolleiste, eine Einzel- oder Doppelseitenvorschau und das Zoomen, d. h. das Vergrößern des vorschauierten Bilds. Sie müssen keine Memberfunktionen aufrufen CPreviewViewoder außer Kraft setzen, es sei denn, Sie möchten Eine eigene Benutzeroberfläche für die Druckvorschau implementieren (z. B. wenn Sie die Bearbeitung im Druckvorschaumodus unterstützen möchten). Weitere Informationen zur Verwendung CViewfinden Sie unter Dokument-/Ansichtsarchitektur und -druck. Weitere Informationen zum Anpassen der Seitenansicht finden Sie in technischem Hinweis 30 .

Vererbungshierarchie

CObject

CCmdTarget

CWnd

CView

Anforderungen

Headerafxwin.h:

CView::CView

Erstellt ein CView-Objekt.

CView();

Hinweise

Das Framework ruft den Konstruktor auf, wenn ein neues Framefenster erstellt oder ein Fenster geteilt wird. Überschreiben Sie die OnInitialUpdate Memberfunktion, um die Ansicht zu initialisieren, nachdem das Dokument angefügt wurde.

CView::DoPreparePrinting

Rufen Sie diese Funktion über die Außerkraftsetzung auf OnPreparePrinting , um das Dialogfeld "Drucken" aufzurufen und einen Druckergerätekontext zu erstellen.

BOOL DoPreparePrinting(CPrintInfo* pInfo);

Parameter

pInfo
Verweist auf eine CPrintInfo Struktur, die den aktuellen Druckauftrag beschreibt.

Rückgabewert

Nonzero, wenn der Druck oder die Seitenansicht beginnen kann; 0, wenn der Vorgang abgebrochen wurde.

Hinweise

Das Verhalten dieser Funktion hängt davon ab, ob sie für das Drucken oder die Seitenansicht (angegeben durch das m_bPreview Element des pInfo Parameters) aufgerufen wird. Wenn eine Datei gedruckt wird, ruft diese Funktion das Dialogfeld "Drucken" mithilfe der Werte in der Struktur auf, pInfo auf die CPrintInfo verweist. Nachdem der Benutzer das Dialogfeld geschlossen hat, erstellt die Funktion einen Druckergerätekontext basierend auf den Einstellungen, die der Benutzer im Dialogfeld angegeben hat, und gibt diesen Gerätekontext über den pInfo Parameter zurück. Dieser Gerätekontext wird verwendet, um das Dokument zu drucken.

Wenn eine Datei in der Vorschau angezeigt wird, erstellt diese Funktion mithilfe der aktuellen Druckereinstellungen einen Druckergerätekontext. Dieser Gerätekontext wird zum Simulieren des Druckers während der Vorschau verwendet.

CView::GetDocument

Rufen Sie diese Funktion auf, um einen Zeiger auf das Dokument der Ansicht abzurufen.

CDocument* GetDocument() const;

Rückgabewert

Ein Zeiger auf das Objekt, das CDocument der Ansicht zugeordnet ist. NULL wenn die Ansicht nicht an ein Dokument angefügt ist.

Hinweise

Auf diese Weise können Sie die Memberfunktionen des Dokuments aufrufen.

CView::IsSelected

Wird vom Framework aufgerufen, um zu überprüfen, ob das angegebene Dokumentelement ausgewählt ist.

virtual BOOL IsSelected(const CObject* pDocItem) const;

Parameter

pDocItem
Verweist auf das zu testende Dokumentelement.

Rückgabewert

Nonzero, wenn das angegebene Dokumentelement ausgewählt ist; andernfalls 0.

Hinweise

Die Standardimplementierung dieser Funktion gibt zurück FALSE. Überschreiben Sie diese Funktion, wenn Sie die Auswahl mithilfe von CDocItem Objekten implementieren. Sie müssen diese Funktion außer Kraft setzen, wenn Ihre Ansicht OLE-Elemente enthält.

CView::OnActivateFrame

Wird vom Framework aufgerufen, wenn das Framefenster, das die Ansicht enthält, aktiviert oder deaktiviert wird.

virtual void OnActivateFrame(
    UINT nState,
    CFrameWnd* pFrameWnd);

Parameter

nState
Gibt an, ob das Rahmenfenster aktiviert oder deaktiviert wird. Es kann sich um einen der folgenden Werte handeln:

  • WA_INACTIVE Das Rahmenfenster wird deaktiviert.

  • WA_ACTIVE Das Rahmenfenster wird durch eine andere Methode als einen Mausklick aktiviert (z. B. durch Verwenden der Tastaturschnittstelle zum Auswählen des Fensters).

  • WA_CLICKACTIVE Das Rahmenfenster wird mit einem Mausklick aktiviert.

pFrameWnd
Zeigen Sie auf das Rahmenfenster, das aktiviert werden soll.

Hinweise

Überschreiben Sie diese Memberfunktion, wenn Sie eine spezielle Verarbeitung ausführen möchten, wenn das der Ansicht zugeordnete Framefenster aktiviert oder deaktiviert wird. Führt diese Außerkraftsetzung beispielsweise aus, CFormView wenn das Steuerelement gespeichert und wiederhergestellt wird, das den Fokus besitzt.

CView::OnActivateView

Wird vom Framework aufgerufen, wenn eine Ansicht aktiviert oder deaktiviert wird.

virtual void OnActivateView(
    BOOL bActivate,
    CView* pActivateView,
    CView* pDeactiveView);

Parameter

bActivate
Gibt an, ob die Ansicht aktiviert oder deaktiviert wird.

pActivateView
Verweist auf das Ansichtsobjekt, das aktiviert wird.

pDeactiveView
Verweist auf das Ansichtsobjekt, das deaktiviert wird.

Hinweise

Die Standardimplementierung dieser Funktion legt den Fokus auf die zu aktivierende Ansicht fest. Überschreiben Sie diese Funktion, wenn Sie eine spezielle Verarbeitung durchführen möchten, wenn eine Ansicht aktiviert oder deaktiviert wird. Wenn Sie beispielsweise spezielle visuelle Hinweise bereitstellen möchten, die die aktive Ansicht von den inaktiven Ansichten unterscheiden, würden Sie den bActivate Parameter untersuchen und die Darstellung der Ansicht entsprechend aktualisieren.

Die pActivateView Parameter pDeactiveView zeigen auf dieselbe Ansicht, wenn das Standard Framefenster der Anwendung ohne Änderung in der aktiven Ansicht aktiviert wird , z. B. wenn der Fokus von einer anderen Anwendung auf diese Anwendung übertragen wird, anstatt von einer Ansicht in eine andere innerhalb der Anwendung oder beim Wechseln zwischen untergeordneten MDI-Fenstern. Dies ermöglicht es einer Ansicht, ihre Palette bei Bedarf neu zu realisieren.

Diese Parameter unterscheiden sich, wenn CFrameWnd::SetActiveView sie mit einer Ansicht aufgerufen werden, die sich von CFrameWnd::GetActiveView der Rückgabe unterscheidet. Dies geschieht am häufigsten mit Splitterfenstern.

CView::OnBeginPrinting

Wird zu Beginn eines Druckauftrags oder Seitenansichtauftrags vom Framework aufgerufen, nachdem OnPreparePrinting aufgerufen wurde.

virtual void OnBeginPrinting(
    CDC* pDC,
    CPrintInfo* pInfo);

Parameter

pDC
Verweist auf den Druckergerätekontext.

pInfo
Verweist auf eine CPrintInfo Struktur, die den aktuellen Druckauftrag beschreibt.

Hinweise

Bei der Standardimplementierung dieser Funktion wird keine Aktion ausgeführt. Überschreiben Sie diese Funktion, um alle speziell für den Druck benötigten GDI-Ressourcen, z. B. Stifte oder Schriftarten, zuzuordnen. Wählen Sie die GDI-Objekte in den Gerätekontext aus der OnPrint Memberfunktion für jede Seite aus, die sie verwendet. Wenn Sie das gleiche Ansichtsobjekt verwenden, um den Bildschirm anzuzeigen und zu drucken, verwenden Sie separate Variablen für die für jeden Bildschirm erforderlichen GDI-Ressourcen. Dadurch können Sie den Bildschirm während des Druckens aktualisieren.

Mit dieser Funktion können Sie auch Initialisierungen durchführen, die von Eigenschaften des Druckergerätekontextes abhängig sind. Beispielsweise kann die Anzahl der Seiten, die zum Drucken des Dokuments benötigt werden, von den Einstellungen abhängig sein, die der Benutzer im Dialogfeld „Drucken“ (z. B. Seitenlänge) angibt. In einer solchen Situation können Sie die Dokumentlänge in der OnPreparePrinting Memberfunktion nicht angeben, wo dies normalerweise der Fall wäre. Sie müssen warten, bis der Druckergerätekontext basierend auf den Dialogfeldeinstellungen erstellt wurde. OnBeginPrinting ist die erste überschreibbare Funktion, mit der Sie auf das CDC Objekt zugreifen können, das den Druckergerätekontext darstellt, sodass Sie die Dokumentlänge aus dieser Funktion festlegen können. Wenn die Länge des Dokuments nicht zu diesem Zeitpunkt angegeben wird, wird in der Seitenansicht keine Bildlaufleiste angezeigt.

CView::OnDragEnter

Wird vom Framework aufgerufen, wenn die Maus zuerst in den Nicht-Bildlaufbereich des Drop-Zielfensters wechselt.

virtual DROPEFFECT OnDragEnter(
    COleDataObject* pDataObject,
    DWORD dwKeyState,
    CPoint point);

Parameter

pDataObject
Zeigt auf den COleDataObject Ablagebereich der Ansicht.

dwKeyState
Enthält den Status der Zusatztasten. Dies ist eine Kombination aus einer beliebigen Anzahl der folgenden Elemente: MK_CONTROL, MK_SHIFT, , MK_ALT, MK_LBUTTON, , MK_MBUTTONund MK_RBUTTON.

point
Die aktuelle Mausposition relativ zum Clientbereich der Ansicht.

Rückgabewert

Ein Wert aus dem DROPEFFECT Aufzählungstyp, der den Typ des Ablages angibt, der auftreten würde, wenn der Benutzer das Objekt an dieser Position abgelegt hat. Der Typ des Ablages hängt normalerweise vom aktuellen Schlüsselstatus ab, der durch dwKeyState. Eine Standardzuordnung von Keystates zu DROPEFFECT Werten lautet:

  • DROPEFFECT_NONE Das Datenobjekt kann in diesem Fenster nicht gelöscht werden.

  • DROPEFFECT_LINK für MK_CONTROL|MK_SHIFT erstellt eine Verknüpfung zwischen dem Objekt und seinem Server.

  • DROPEFFECT_COPY für MK_CONTROL Erstellt eine Kopie des abgelegten Objekts.

  • DROPEFFECT_MOVE für MK_ALT Erstellt eine Kopie des abgelegten Objekts und löscht das ursprüngliche Objekt. Dies ist in der Regel der Standardablageeffekt, wenn die Ansicht dieses Datenobjekt akzeptieren kann.

Weitere Informationen finden Sie im MFC Advanced Concepts-Beispiel OCLIENT.

Hinweise

Die Standardimplementierung besteht darin, nichts zu tun und zurückzugeben DROPEFFECT_NONE.

Überschreiben Sie diese Funktion, um zukünftige Aufrufe der OnDragOver Memberfunktion vorzubereiten. Alle daten, die für das Datenobjekt erforderlich sind, sollten zurzeit zur späteren Verwendung in der OnDragOver Memberfunktion abgerufen werden. Die Ansicht sollte zurzeit auch aktualisiert werden, um dem Benutzer visuelles Feedback zu geben. Weitere Informationen finden Sie im Artikel OLE-Drag and Drop: Implementieren eines Dropziels.

CView::OnDragLeave

Wird während eines Ziehvorgangs vom Framework aufgerufen, wenn die Maus aus dem gültigen Dropbereich für dieses Fenster verschoben wird.

virtual void OnDragLeave();

Hinweise

Überschreiben Sie diese Funktion, wenn die aktuelle Ansicht aktionen, die während OnDragEnter oder OnDragOver aufrufen ausgeführt werden, sauber muss, z. B. das Entfernen von visuellem Benutzerfeedback, während das Objekt gezogen und verworfen wurde.

CView::OnDragOver

Wird während eines Ziehvorgangs vom Framework aufgerufen, wenn die Maus über das Drop-Zielfenster verschoben wird.

virtual DROPEFFECT OnDragOver(
    COleDataObject* pDataObject,
    DWORD dwKeyState,
    CPoint point);

Parameter

pDataObject
Verweist auf das COleDataObject Gezogene über das Drop-Ziel.

dwKeyState
Enthält den Status der Zusatztasten. Dies ist eine Kombination aus einer beliebigen Anzahl der folgenden Elemente: MK_CONTROL, MK_SHIFT, , MK_ALT, MK_LBUTTON, , MK_MBUTTONund MK_RBUTTON.

point
Die aktuelle Mausposition relativ zum Ansichtsclientbereich.

Rückgabewert

Ein Wert aus dem DROPEFFECT Aufzählungstyp, der den Typ des Ablages angibt, der auftreten würde, wenn der Benutzer das Objekt an dieser Position abgelegt hat. Der Typ des Ablages hängt häufig vom aktuellen Schlüsselstatus ab, wie angegeben dwKeyState. Eine Standardzuordnung von Keystates zu DROPEFFECT Werten lautet:

  • DROPEFFECT_NONE Das Datenobjekt kann in diesem Fenster nicht gelöscht werden.

  • DROPEFFECT_LINK für MK_CONTROL|MK_SHIFT erstellt eine Verknüpfung zwischen dem Objekt und seinem Server.

  • DROPEFFECT_COPY für MK_CONTROL Erstellt eine Kopie des abgelegten Objekts.

  • DROPEFFECT_MOVE für MK_ALT Erstellt eine Kopie des abgelegten Objekts und löscht das ursprüngliche Objekt. Dies ist in der Regel der Standardablageeffekt, wenn die Ansicht das Datenobjekt akzeptieren kann.

Weitere Informationen finden Sie im MFC Advanced Concepts-Beispiel OCLIENT.

Hinweise

Die Standardimplementierung besteht darin, nichts zu tun und zurückzugeben DROPEFFECT_NONE.

Überschreiben Sie diese Funktion, um dem Benutzer während des Ziehvorgangs visuelles Feedback zu geben. Da diese Funktion kontinuierlich aufgerufen wird, sollte jeder darin enthaltene Code so weit wie möglich optimiert werden. Weitere Informationen finden Sie im Artikel OLE-Drag and Drop: Implementieren eines Dropziels.

CView::OnDragScroll

Wird vor dem Aufrufen OnDragEnter des Frameworks aufgerufen oder OnDragOver bestimmt, ob sich der Punkt im Bildlaufbereich befindet.

virtual DROPEFFECT OnDragScroll(
    DWORD dwKeyState,
    CPoint point);

Parameter

dwKeyState
Enthält den Status der Zusatztasten. Dies ist eine Kombination aus einer beliebigen Anzahl der folgenden Elemente: MK_CONTROL, MK_SHIFT, , MK_ALT, MK_LBUTTON, , MK_MBUTTONund MK_RBUTTON.

point
Enthält die Position des Cursors in Pixeln relativ zum Bildschirm.

Rückgabewert

Ein Wert aus dem DROPEFFECT Aufzählungstyp, der den Typ des Ablages angibt, der auftreten würde, wenn der Benutzer das Objekt an dieser Position abgelegt hat. Der Typ des Ablages hängt normalerweise vom aktuellen Schlüsselstatus ab, der durch dwKeyState. Eine Standardzuordnung von Keystates zu DROPEFFECT Werten lautet:

  • DROPEFFECT_NONE Das Datenobjekt kann in diesem Fenster nicht gelöscht werden.

  • DROPEFFECT_LINK für MK_CONTROL|MK_SHIFT erstellt eine Verknüpfung zwischen dem Objekt und seinem Server.

  • DROPEFFECT_COPY für MK_CONTROL Erstellt eine Kopie des abgelegten Objekts.

  • DROPEFFECT_MOVE für MK_ALT Erstellt eine Kopie des abgelegten Objekts und löscht das ursprüngliche Objekt.

  • DROPEFFECT_SCROLL Gibt an, dass ein Ziehlaufvorgang in der Zielansicht stattfindet oder ausgeführt wird.

Weitere Informationen finden Sie im MFC Advanced Concepts-Beispiel OCLIENT.

Hinweise

Überschreiben Sie diese Funktion, wenn Sie ein spezielles Verhalten für dieses Ereignis bereitstellen möchten. Die Standardimplementierung führt automatisch einen Bildlauf durch, wenn der Cursor in den Standardlaufbereich innerhalb des Rahmens jedes Fensters gezogen wird. Weitere Informationen finden Sie im Artikel OLE-Drag and Drop: Implementieren eines Dropziels.

CView::OnDraw

Vom Framework aufgerufen, um ein Bild des Dokuments zu rendern.

virtual void OnDraw(CDC* pDC) = 0;

Parameter

pDC
Verweist auf den Gerätekontext, der zum Rendern eines Bilds des Dokuments verwendet werden soll.

Hinweise

Das Framework ruft diese Funktion auf, um Bildschirmanzeigen, Druck- und Druckvorschau durchzuführen und in jedem Fall einen anderen Gerätekontext zu übergeben. Es ist keine Standardimplementierung vorhanden.

Sie müssen diese Funktion außer Kraft setzen, um die Ansicht des Dokuments anzuzeigen. Sie können Aufrufe der Grafikgeräteschnittstelle (Graphic Device Interface, GDI) mithilfe des Objekts ausführen, auf das CDC der pDC Parameter verweist. Sie können GDI-Ressourcen, z. B. Stifte oder Schriftarten, in den Gerätekontext auswählen, bevor Sie zeichnen und anschließend die Auswahl aufheben. Häufig kann ihr Zeichnungscode geräteunabhängig sein; Das heißt, es sind keine Informationen darüber erforderlich, welche Art von Gerät das Bild anzeigt.

Um die Zeichnung zu optimieren, rufen Sie die RectVisible Memberfunktion des Gerätekontexts auf, um herauszufinden, ob ein bestimmtes Rechteck gezeichnet wird. Wenn Sie zwischen normaler Bildschirmanzeige und Druck unterscheiden müssen, rufen Sie die IsPrinting Memberfunktion des Gerätekontexts auf.

CView::OnDrop

Wird vom Framework aufgerufen, wenn der Benutzer ein Datenobjekt über ein gültiges Drop-Ziel loslässt.

virtual BOOL OnDrop(
    COleDataObject* pDataObject,
    DROPEFFECT dropEffect,
    CPoint point);

Parameter

pDataObject
Verweist auf das COleDataObject Abgelegte in das Drop-Ziel.

dropEffect
Der Drop-Effekt, den der Benutzer angefordert hat.

  • DROPEFFECT_COPY Erstellt eine Kopie des zu löschenden Datenobjekts.

  • DROPEFFECT_MOVE Verschiebt das Datenobjekt an die aktuelle Mausposition.

  • DROPEFFECT_LINK Erstellt eine Verknüpfung zwischen einem Datenobjekt und seinem Server.

point
Die aktuelle Mausposition relativ zum Ansichtsclientbereich.

Rückgabewert

Nonzero, wenn der Abbruch erfolgreich war; andernfalls 0.

Hinweise

Die Standardimplementierung führt nichts aus und gibt zurück FALSE.

Überschreiben Sie diese Funktion, um die Auswirkung eines OLE-Drops in den Clientbereich der Ansicht zu implementieren. Das Datenobjekt kann über pDataObject Zwischenablagedatenformate und an dem angegebenen Punkt abgelegte Daten untersucht werden.

Hinweis

Das Framework ruft diese Funktion nicht auf, wenn in dieser Ansichtsklasse eine Außerkraftsetzung OnDropEx vorhanden ist.

CView::OnDropEx

Wird vom Framework aufgerufen, wenn der Benutzer ein Datenobjekt über ein gültiges Drop-Ziel loslässt.

virtual DROPEFFECT OnDropEx(
    COleDataObject* pDataObject,
    DROPEFFECT dropDefault,
    DROPEFFECT dropList,
    CPoint point);

Parameter

pDataObject
Verweist auf das COleDataObject Abgelegte in das Drop-Ziel.

dropDefault
Der Effekt, den der Benutzer basierend auf dem aktuellen Schlüsselstatus für den Standardablagevorgang ausgewählt hat. Z.B. DROPEFFECT_NONE. Drop-Effekte werden im Abschnitt "Hinweise" erläutert.

dropList
Eine Liste der Dropeffekte, die von der Dropquelle unterstützt werden. Drop effect values can be combined using the bitwise OR ( |) operation. Drop-Effekte werden im Abschnitt "Hinweise" erläutert.

point
Die aktuelle Mausposition relativ zum Ansichtsclientbereich.

Rückgabewert

Der Drop-Effekt, der aus dem Dropversuch an der durch .point Dies muss einer der werte sein, die durch dropEffectList. Drop-Effekte werden im Abschnitt "Hinweise" erläutert.

Hinweise

Die Standardimplementierung besteht darin, nichts zu tun und einen Dummywert ( -1 ) zurückzugeben, um anzugeben, dass das Framework den OnDrop Handler aufrufen soll.

Überschreiben Sie diese Funktion, um den Effekt eines Ziehens und Ablegens mit der rechten Maustaste zu implementieren. Beim Ziehen und Ablegen mit der rechten Maustaste wird in der Regel ein Menü mit Auswahlmöglichkeiten angezeigt, wenn die rechte Maustaste losgelassen wird.

Ihre Außerkraftsetzung OnDropEx sollte die rechte Maustaste abfragen. Sie können den Zustand der rechten Maustaste von Ihrem OnDragEnter Handler aufrufen GetKeyState oder speichern.

  • Wenn die rechte Maustaste gedrückt ist, sollte die Überschreibung ein Popupmenü anzeigen, das die Dropeffekte von der Dropquelle unterstützt.

    • Untersuchen Sie dropList , um die von der Dropquelle unterstützten Drop-Effekte zu ermitteln. Aktivieren Sie nur diese Aktionen im Popupmenü.

    • Wird verwendet SetMenuDefaultItem , um die Standardaktion basierend auf dropDefault.

    • Führen Sie schließlich die von der Benutzerauswahl im Popupmenü angegebene Aktion aus.

  • Wenn die rechte Maustaste nicht gedrückt ist, sollte die Außerkraftsetzung dies als Standard-Drop-Anforderung verarbeiten. Verwenden Sie den in dropDefault. Alternativ kann die Außerkraftsetzung den Dummywert (-1) zurückgeben, um anzugeben, dass OnDrop dieser Ablagevorgang behandelt wird.

Wird pDataObject verwendet, um das COleDataObject Datenformat der Zwischenablage und die am angegebenen Punkt abgelegten Daten in der Zwischenablage zu untersuchen.

Drop effects describe the action associated with a drop operation. Eine Liste der Dropeffekte finden Sie in der folgenden Liste:

  • DROPEFFECT_NONE Ein Drop wäre nicht zulässig.

  • DROPEFFECT_COPY Ein Kopiervorgang würde ausgeführt.

  • DROPEFFECT_MOVE Ein Verschiebungsvorgang würde ausgeführt.

  • DROPEFFECT_LINK Es würde eine Verknüpfung der verworfenen Daten mit den ursprünglichen Daten hergestellt.

  • DROPEFFECT_SCROLL Gibt an, dass im Ziel ein Bildlaufvorgang ausgeführt werden soll oder ausgeführt wird.

Weitere Informationen zum Festlegen des Standardmenübefehls finden Sie im SetMenuDefaultItem Windows SDK und CMenu::GetSafeHmenu in diesem Volume.

CView::OnEndPrinting

Wird vom Framework aufgerufen, nachdem ein Dokument gedruckt oder in der Vorschau angezeigt wurde.

virtual void OnEndPrinting(
    CDC* pDC,
    CPrintInfo* pInfo);

Parameter

pDC
Verweist auf den Druckergerätekontext.

pInfo
Verweist auf eine CPrintInfo Struktur, die den aktuellen Druckauftrag beschreibt.

Hinweise

Bei der Standardimplementierung dieser Funktion wird keine Aktion ausgeführt. Überschreiben Sie diese Funktion, um alle GDI-Ressourcen freizugeben, die Sie in der OnBeginPrinting Memberfunktion zugeordnet haben.

CView::OnEndPrintPreview

Wird vom Framework aufgerufen, wenn der Benutzer den Druckvorschaumodus verlässt.

virtual void OnEndPrintPreview(
    CDC* pDC,
    CPrintInfo* pInfo,
    POINT point,
    CPreviewView* pView);

Parameter

pDC
Verweist auf den Druckergerätekontext.

pInfo
Verweist auf eine CPrintInfo Struktur, die den aktuellen Druckauftrag beschreibt.

point
Gibt den Punkt auf der Seite an, der zuletzt im Vorschaumodus angezeigt wurde.

pView
Verweist auf das Ansichtsobjekt, das für die Vorschau verwendet wird.

Hinweise

Die Standardimplementierung dieser Funktion ruft die OnEndPrinting Memberfunktion auf und stellt das Standard Framefenster in den Zustand wieder her, in dem es sich befand, bevor die Seitenansicht begonnen hat. Überschreiben Sie diese Funktion, um eine spezielle Verarbeitung auszuführen, wenn der Vorschaumodus beendet wird. Wenn Sie beispielsweise die Position des Benutzers im Dokument beim Wechseln vom Vorschaumodus zum normalen Anzeigemodus Standard möchten, können Sie zu der position scrollen, die durch den point Parameter und das m_nCurPage Element der CPrintInfo Struktur beschrieben wird, auf die der pInfo Parameter verweist.

Rufen Sie immer die Basisklassenversion ihrer OnEndPrintPreview Außerkraftsetzung auf, in der Regel am Ende der Funktion.

CView::OnInitialUpdate

Wird vom Framework aufgerufen, nachdem die Ansicht zuerst an das Dokument angefügt wurde, aber bevor die Ansicht anfänglich angezeigt wird.

virtual void OnInitialUpdate();

Hinweise

Die Standardimplementierung dieser Funktion ruft die OnUpdate Memberfunktion ohne Hinweisinformationen auf (d. a. mit den Standardwerten 0 für den lHint Parameter und NULL für den pHint Parameter). Überschreiben Sie diese Funktion, um eine einmalige Initialisierung durchzuführen, die Informationen zum Dokument erfordert. Wenn Ihre Anwendung beispielsweise Dokumente mit fester Größe aufweist, können Sie diese Funktion verwenden, um die Bildlaufbeschränkungen einer Ansicht basierend auf der Dokumentgröße zu initialisieren. Wenn Ihre Anwendung Dokumente mit variabler Größe unterstützt, können Sie OnUpdate die Bildlaufgrenzwerte jedes Mal aktualisieren, wenn sich das Dokument ändert.

CView::OnPrepareDC

Wird vom Framework aufgerufen, bevor die Memberfunktion für die OnDraw Bildschirmanzeige aufgerufen wird und bevor die OnPrint Memberfunktion während des Druckens oder der Seitenansicht für jede Seite aufgerufen wird.

virtual void OnPrepareDC(
    CDC* pDC,
    CPrintInfo* pInfo = NULL);

Parameter

pDC
Verweist auf den Gerätekontext, der zum Rendern eines Bilds des Dokuments verwendet werden soll.

pInfo
Verweist auf eine CPrintInfo Struktur, die den aktuellen Druckauftrag beschreibt, wenn OnPrepareDC der Druck oder die Seitenvorschau aufgerufen wird; das m_nCurPage Element gibt die Seite an, die gedruckt werden soll. Dieser Parameter ist NULL , wenn OnPrepareDC für die Bildschirmanzeige aufgerufen wird.

Hinweise

Die Standardimplementierung dieser Funktion führt nichts aus, wenn die Funktion für die Bildschirmanzeige aufgerufen wird. Diese Funktion wird jedoch in abgeleiteten Klassen außer Kraft gesetzt, um CScrollViewAttribute des Gerätekontexts anzupassen. Daher sollten Sie die Basisklassenimplementierung immer am Anfang der Außerkraftsetzung aufrufen.

Wenn die Funktion zum Drucken aufgerufen wird, überprüft die Standardimplementierung die im pInfo Parameter gespeicherten Seiteninformationen. Wenn die Länge des Dokuments nicht angegeben wurde, wird davon ausgegangen, OnPrepareDC dass das Dokument eine Seite lang ist und die Druckschleife beendet wird, nachdem eine Seite gedruckt wurde. Die Funktion stoppt die Druckschleife, indem sie das m_bContinuePrinting Element der Struktur auf FALSE.

Außerkraftsetzen OnPrepareDC aus einem der folgenden Gründe:

  • So passen Sie die Attribute des Gerätekontexts nach Bedarf für die angegebene Seite an. Wenn Sie beispielsweise den Zuordnungsmodus oder andere Merkmale des Gerätekontexts festlegen müssen, führen Sie dies in dieser Funktion aus.

  • So führen Sie die Seitenauslagerung für die Druckzeit aus. Normalerweise geben Sie die Länge des Dokuments beim Drucken mithilfe der OnPreparePrinting Memberfunktion an. Wenn Sie jedoch nicht im Voraus wissen, wie lange das Dokument ist (z. B. beim Drucken einer nicht bestimmten Anzahl von Datensätzen aus einer Datenbank), setzen Sie die Überprüfung auf das Ende des Dokuments während des Druckens außer Kraft OnPrepareDC . Wenn kein Dokument mehr gedruckt werden soll, legen Sie das m_bContinuePrinting Element der CPrintInfo Struktur auf FALSE.

  • So senden Sie Escapecodes auf Seitenbasis an den Drucker. Rufen Sie zum Senden von OnPrepareDCEscapecodes die Escape Memberfunktion des pDC Parameters auf.

Rufen Sie die Basisklassenversion am OnPrepareDC Anfang der Außerkraftsetzung auf.

Beispiel

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

Wird vom Framework aufgerufen, bevor ein Dokument gedruckt oder in der Vorschau angezeigt wird.

virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);

Parameter

pInfo
Verweist auf eine CPrintInfo Struktur, die den aktuellen Druckauftrag beschreibt.

Rückgabewert

Nonzero, um mit dem Drucken zu beginnen; 0, wenn der Druckauftrag abgebrochen wurde.

Hinweise

Bei der Standardimplementierung wird keine Aktion ausgeführt.

Sie müssen diese Funktion außer Kraft setzen, um das Drucken und die Seitenansicht zu aktivieren. Rufen Sie die DoPreparePrinting Memberfunktion auf, übergeben Sie ihn an den pInfo Parameter, und geben Sie dann den Rückgabewert zurück. DoPreparePrinting Zeigt das Dialogfeld "Drucken" an und erstellt einen Druckergerätekontext. Wenn Sie das Dialogfeld "Drucken" mit anderen Werten als den Standardwerten initialisieren möchten, weisen Sie den Elementen von pInfo. Wenn Sie beispielsweise die Länge des Dokuments kennen, übergeben Sie den Wert an die SetMaxPage-Memberfunktion vor pInfo dem Aufrufen DoPreparePrinting. Dieser Wert wird im Feld "An:" im Bereich des Dialogfelds "Drucken" angezeigt.

DoPreparePrinting zeigt das Dialogfeld "Drucken" für einen Vorschauauftrag nicht an. Wenn Sie das Dialogfeld "Drucken" für einen Druckauftrag umgehen möchten, überprüfen Sie, ob es sich um das m_bPreview Element handelt FALSEpInfo, und legen Sie es TRUE dann auf fest, bevor Sie es DoPreparePrintingübergeben; setzen Sie es FALSE anschließend zurück.

Wenn Sie Initialisierungen durchführen müssen, die Zugriff auf das CDC Objekt erfordern, das den Druckergerätekontext darstellt (z. B. wenn Sie die Seitengröße kennen müssen, bevor Sie die Länge des Dokuments angeben), setzen Sie die OnBeginPrinting Memberfunktion außer Kraft.

Wenn Sie den Wert der Parameter oder m_strPageDesc Member des m_nNumPreviewPagespInfo Parameters festlegen möchten, führen Sie dies nach dem Aufrufen DoPreparePrintingaus. Die DoPreparePrinting Memberfunktion wird auf den Wert festgelegt m_nNumPreviewPages , der in der Anwendung gefunden wird. INI-Datei und legt m_strPageDesc den Standardwert fest.

Beispiel

Überschreiben OnPreparePrinting und Aufrufen der Außerkraftsetzung DoPreparePrinting , sodass das Framework ein Dialogfeld "Drucken" anzeigt und einen Drucker DC für Sie erstellt.

BOOL CMyEditView::OnPreparePrinting(CPrintInfo* pInfo)
{
   return CEditView::DoPreparePrinting(pInfo);
}

Wenn Sie wissen, wie viele Seiten das Dokument enthält, legen Sie die maximale Seite vor OnPreparePrinting dem Aufrufen DoPreparePrintingfest. Das Framework zeigt die maximale Seitenzahl im Feld "an" des Dialogfelds "Drucken" an.

BOOL CExampleView::OnPreparePrinting(CPrintInfo* pInfo)
{
   //The document has 2 pages.
   pInfo->SetMaxPage(2);
   return CView::DoPreparePrinting(pInfo);
}

CView::OnPrint

Vom Framework aufgerufen, um eine Seite des Dokuments zu drucken oder in einer Vorschau anzuzeigen.

virtual void OnPrint(
    CDC* pDC,
    CPrintInfo* pInfo);

Parameter

pDC
Verweist auf den Druckergerätekontext.

pInfo
Verweist auf eine CPrintInfo Struktur, die den aktuellen Druckauftrag beschreibt.

Hinweise

Für jede gedruckte Seite ruft das Framework diese Funktion unmittelbar nach dem Aufrufen der OnPrepareDC Memberfunktion auf. Die gedruckte Seite wird durch das Element der CPrintInfo Struktur angegeben, auf die m_nCurPagepInfo verweist. Die Standardimplementierung ruft die OnDraw Memberfunktion auf und übergibt sie an den Druckergerätekontext.

Überschreiben Sie diese Funktion aus einem der folgenden Gründe:

  • So lassen Sie das Drucken von mehrseitigen Dokumenten zu. Rendern Sie nur den Teil des Dokuments, der der aktuell gedruckten Seite entspricht. Wenn Sie OnDraw das Rendering ausführen, können Sie den Viewportursprung so anpassen, dass nur der entsprechende Teil des Dokuments gedruckt wird.

  • Damit das gedruckte Bild anders aussieht als das Bildschirmbild (d. r., wenn ihre Anwendung nicht WYSIWYG ist). Verwenden Sie anstelle des Druckergerätekontexts OnDrawden Gerätekontext, um ein Bild mithilfe von Attributen zu rendern, die nicht auf dem Bildschirm angezeigt werden.

    Wenn Sie GDI-Ressourcen zum Drucken benötigen, die Sie nicht für die Bildschirmanzeige verwenden, wählen Sie sie im Gerätekontext aus, bevor Sie sie zeichnen und anschließend deaktivieren. Diese GDI-Ressourcen sollten in OnBeginPrinting zugewiesen und freigegeben werden.OnEndPrinting

  • So implementieren Sie Kopf- oder Fußzeilen. Sie können das Rendern weiterhin verwenden OnDraw , indem Sie den Bereich einschränken, auf den er drucken kann.

Beachten Sie, dass das m_rectDraw Element des pInfo Parameters den druckbaren Bereich der Seite in logischen Einheiten beschreibt.

Rufen OnPrepareDC Sie nicht in Der Außerkraftsetzung von OnPrint; das Framework ruft automatisch auf OnPrepareDC , bevor Sie aufrufen OnPrint.

Beispiel

Es folgt ein Skelett für eine überschriebene OnPrint Funktion:

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);
}

Ein weiteres Beispiel finden Sie unter CRichEditView::PrintInsideRect.

CView::OnScroll

Wird vom Framework aufgerufen, um zu bestimmen, ob ein Bildlauf möglich ist.

virtual BOOL OnScroll(
    UINT nScrollCode,
    UINT nPos,
    BOOL bDoScroll = TRUE);

Parameter

nScrollCode
Ein Bildlaufleistencode, der die Bildlaufanforderung des Benutzers angibt. Dieser Parameter besteht aus zwei Teilen: einem Byte mit niedriger Reihenfolge, das den Typ des horizontalen Bildlaufs bestimmt, und einem Byte mit hoher Reihenfolge, das den Typ des vertikalen Bildlaufs bestimmt:

  • SB_BOTTOM Scrollt nach unten.

  • SB_LINEDOWN Scrollt eine Zeile nach unten.

  • SB_LINEUP Scrollt eine Zeile nach oben.

  • SB_PAGEDOWN Scrollt eine Seite nach unten.

  • SB_PAGEUP Scrollt eine Seite nach oben.

  • SB_THUMBTRACK Verschiebt das Bildlauffeld an die angegebene Position. Die aktuelle Position wird in nPos.

  • SB_TOP Scrollt nach oben.

nPos
Enthält die aktuelle Position des Bildlauffelds, wenn der Bildlaufleistencode lautet SB_THUMBTRACK; andernfalls wird er nicht verwendet. Je nach anfänglicher Bildlaufbereich nPos kann es negativ sein und sollte bei Bedarf in eine int Verschiebung verschoben werden.

bDoScroll
Bestimmt, ob die angegebene Bildlaufaktion tatsächlich ausgeführt werden soll. Wenn TRUEder Bildlauf durchgeführt werden soll, sollte der Bildlauf nicht erfolgen, wenn FALSEder Bildlauf nicht erfolgen soll.

Rückgabewert

Wenn bDoScroll und TRUE die Ansicht tatsächlich gescrollt wurde, geben Sie "nonzero" zurück, andernfalls 0. Wenn bDoScroll dies der Wert ist FALSE, geben Sie den Wert zurück, den Sie zurückgegeben hätten, wenn bDoScroll dies der Grund wäre TRUE, obwohl Sie den Bildlauf nicht tatsächlich ausführen.

Hinweise

In einem Fall wird diese Funktion vom Framework aufgerufen, auf bDoScroll das festgelegt TRUE ist, wenn die Ansicht eine Bildlaufleistennachricht empfängt. In diesem Fall sollten Sie die Ansicht tatsächlich scrollen. In dem anderen Fall wird diese Funktion aufgerufen, bDoScroll mit FALSE der festgelegt wird, wenn ein OLE-Element anfangs in den Bereich für den automatischen Bildlauf eines Drop-Ziels gezogen wird, bevor der Bildlauf tatsächlich stattfindet. In diesem Fall sollten Sie die Ansicht nicht tatsächlich scrollen.

CView::OnScrollBy

Wird vom Framework aufgerufen, wenn der Benutzer einen Bereich außerhalb der aktuellen Ansicht des Dokuments anzeigt, entweder durch Ziehen eines OLE-Elements gegen die aktuellen Rahmen der Ansicht oder durch Bearbeiten der vertikalen oder horizontalen Bildlaufleisten.

virtual BOOL OnScrollBy(
    CSize sizeScroll,
    BOOL bDoScroll = TRUE);

Parameter

sizeScroll
Die Anzahl der Pixel, die horizontal und vertikal gescrollt wurden.

bDoScroll
Bestimmt, ob der Bildlauf der Ansicht erfolgt. Wenn der Bildlauf stattfindet, tritt ein Bildlauf auf. Wenn TRUEFALSE, tritt kein Bildlauf auf.

Rückgabewert

Nonzero, wenn die Ansicht gescrollt werden konnte; andernfalls 0.

Hinweise

In abgeleiteten Klassen überprüft diese Methode, ob die Ansicht in der vom Benutzer angeforderten Richtung scrollbar ist, und aktualisiert die neue Region bei Bedarf. Diese Funktion wird automatisch aufgerufen und CWnd::OnHScrollCWnd::OnVScroll führt die eigentliche Bildlaufanforderung aus.

Die Standardimplementierung dieser Methode ändert die Ansicht nicht, aber wenn sie nicht aufgerufen wird, führt die Ansicht keinen Bildlauf in einer CScrollViewabgeleiteten Klasse durch.

Wenn die Dokumentbreite oder -höhe 32767 Pixel überschreitet, schlägt der Bildlauf nach 32767 fehl, da OnScrollBy ein ungültiges sizeScroll Argument aufgerufen wird.

CView::OnUpdate

Vom Framework aufgerufen, nachdem das Dokument der Ansicht geändert wurde; diese Funktion wird aufgerufen und CDocument::UpdateAllViews ermöglicht es der Ansicht, die Anzeige entsprechend diesen Änderungen zu aktualisieren.

virtual void OnUpdate(
    CView* pSender,
    LPARAM lHint,
    CObject* pHint);

Parameter

pSender
Verweist auf die Ansicht, die das Dokument geändert hat oder NULL wenn alle Ansichten aktualisiert werden sollen.

lHint
Enthält Informationen zu den Änderungen.

pHint
Verweist auf ein Objekt, das Informationen zu den Änderungen speichert.

Hinweise

Sie wird auch von der Standardimplementierung von OnInitialUpdate. Die Standardimplementierung ungültigt den gesamten Clientbereich und markiert ihn zum Zeichnen, wenn die nächste WM_PAINT Nachricht empfangen wird. Überschreiben Sie diese Funktion, wenn Sie nur die Regionen aktualisieren möchten, die den geänderten Teilen des Dokuments zugeordnet sind. Dazu müssen Sie Informationen zu den Änderungen mithilfe der Hinweisparameter übergeben.

Definieren Sie für die Verwendung lHintspezielle Hinweiswerte, in der Regel eine Bitmaske oder einen Aufzählungstyp, und übergeben Sie einen dieser Werte. Wenn Sie eine Hint-Klasse CObject verwenden pHintmöchten und das Dokument einen Zeiger an ein Hint-Objekt übergeben soll, verwenden Sie beim Überschreiben OnUpdatedie CObject::IsKindOf Memberfunktion, um den Laufzeittyp des Hint-Objekts zu bestimmen.

In der Regel sollten Sie keine Zeichnung direkt von OnUpdate. Bestimmen Sie stattdessen das Rechteck, das in Gerätekoordinaten den Bereich beschreibt, der aktualisiert werden muss; dieses Rechteck an CWnd::InvalidateRect. Dies bewirkt, dass das Malen auftritt, wenn eine WM_PAINT Nachricht das nächste Mal empfangen wird.

Wenn lHint 0 ist und pHint ist NULL, hat das Dokument eine generische Updatebenachrichtigung gesendet. Wenn eine Ansicht eine generische Updatebenachrichtigung empfängt oder die Hinweise nicht decodieren können, sollte sie den gesamten Clientbereich ungültig machen.

Siehe auch

MFC-Beispiel MDIDOCVW
CWnd Klasse
Hierarchiediagramm
CWnd Klasse
CFrameWnd Klasse
CSplitterWnd Klasse
CDC Klasse
CDocTemplate Klasse
CDocument Klasse