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 CScrollView
stellt 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 einCEditView
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 CPreviewView
oder 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 CView
finden Sie unter Dokument-/Ansichtsarchitektur und -druck. Weitere Informationen zum Anpassen der Seitenansicht finden Sie in technischem Hinweis 30 .
Vererbungshierarchie
CView
Anforderungen
Header: afxwin.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 Hauptframefenster 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_MBUTTON
und 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ürMK_CONTROL|MK_SHIFT
erstellt eine Verknüpfung zwischen dem Objekt und seinem Server.DROPEFFECT_COPY
fürMK_CONTROL
Erstellt eine Kopie des abgelegten Objekts.DROPEFFECT_MOVE
fürMK_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 bereinigen muss, die während OnDragEnter
oder OnDragOver
aufrufen ausgeführt werden, z. B. das Entfernen eines visuellen Benutzerfeedbacks, 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_MBUTTON
und 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ürMK_CONTROL|MK_SHIFT
erstellt eine Verknüpfung zwischen dem Objekt und seinem Server.DROPEFFECT_COPY
fürMK_CONTROL
Erstellt eine Kopie des abgelegten Objekts.DROPEFFECT_MOVE
fürMK_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_MBUTTON
und 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ürMK_CONTROL|MK_SHIFT
erstellt eine Verknüpfung zwischen dem Objekt und seinem Server.DROPEFFECT_COPY
fürMK_CONTROL
Erstellt eine Kopie des abgelegten Objekts.DROPEFFECT_MOVE
fürMK_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 aufdropDefault
.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, dassOnDrop
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 Hauptframefenster 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 beibehalten möchten, wenn Sie vom Vorschaumodus in den normalen Anzeigemodus wechseln, 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 CScrollView
Attribute 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 KraftOnPrepareDC
. Wenn kein Dokument mehr gedruckt werden soll, legen Sie dasm_bContinuePrinting
Element derCPrintInfo
Struktur aufFALSE
.So senden Sie Escapecodes auf Seitenbasis an den Drucker. Rufen Sie zum Senden von
OnPrepareDC
Escapecodes dieEscape
Memberfunktion despDC
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 FALSE
pInfo
, 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_nNumPreviewPages
pInfo
Parameters festlegen möchten, führen Sie dies nach dem Aufrufen DoPreparePrinting
aus. 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 DoPreparePrinting
fest. 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_nCurPage
pInfo
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
OnDraw
den 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 innPos
.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 TRUE
der Bildlauf durchgeführt werden soll, sollte der Bildlauf nicht erfolgen, wenn FALSE
der 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 TRUE
FALSE
, 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::OnHScroll
CWnd::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 CScrollView
abgeleiteten 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 lHint
spezielle Hinweiswerte, in der Regel eine Bitmaske oder einen Aufzählungstyp, und übergeben Sie einen dieser Werte. Wenn Sie eine Hint-Klasse CObject
verwenden pHint
möchten und das Dokument einen Zeiger an ein Hint-Objekt übergeben soll, verwenden Sie beim Überschreiben OnUpdate
die 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