Sdílet prostřednictvím


CView Třída

Poskytuje základní funkce pro třídy zobrazení definované uživatelem.

Syntaxe

class AFX_NOVTABLE CView : public CWnd

Členové

Chráněné konstruktory

Název Popis
CView::CView CView Vytvoří objekt.

Veřejné metody

Název Popis
CView::DoPreparePrinting Zobrazí dialogové okno Tisk a vytvoří kontext zařízení tiskárny; volání při přepsání OnPreparePrinting členské funkce.
CView::GetDocument Vrátí dokument přidružený k zobrazení.
CView::IsSelected Testuje, zda je vybrána položka dokumentu. Vyžaduje se pro podporu OLE.
CView::OnDragEnter Volá se při prvním přetažení položky do oblasti přetažení zobrazení.
CView::OnDragLeave Volá se, když přetažená položka opustí oblast zobrazení přetažením.
CView::OnDragOver Volá se, když je položka přetažena přes oblast přetažení zobrazení.
CView::OnDragScroll Volána k určení, zda je kurzor přetažen do oblasti posouvání okna.
CView::OnDrop Volá se, když byla položka vyřazena do oblasti přetažení zobrazení, výchozí obslužná rutina.
CView::OnDropEx Volá se při přetažení položky do oblasti přetažení zobrazení, primární obslužné rutiny.
CView::OnInitialUpdate Volá se po prvním připojení zobrazení k dokumentu.
CView::OnPrepareDC Volá se před zavolání OnDraw členské funkce pro zobrazení obrazovky nebo OnPrint je volána členová funkce pro tisk nebo tisk náhledu.
CView::OnScroll Volá se, když jsou položky OLE přetaženy za ohraničení zobrazení.
CView::OnScrollBy Volá se při posouvání zobrazení obsahujícího aktivní místní položky OLE.

Chráněné metody

Název Popis
CView::OnActivateFrame Volá se při aktivaci nebo deaktivaci okna rámečku obsahujícího zobrazení.
CView::OnActivateView Volá se při aktivaci zobrazení.
CView::OnBeginPrinting Volá se při zahájení tiskové úlohy; přepsání přidělení prostředků rozhraní grafického zařízení (GDI).
CView::OnDraw Volá se k vykreslení obrázku dokumentu pro zobrazení obrazovky, tisk nebo náhled tisku. Vyžaduje se implementace.
CView::OnEndPrinting Volá se při ukončení tiskové úlohy; přepsání pro uvolnění prostředků GDI.
CView::OnEndPrintPreview Volá se při ukončení režimu náhledu.
CView::OnPreparePrinting Volá se před tiskem nebo náhledem dokumentu; přepsání pro inicializaci dialogového okna Tisk.
CView::OnPrint Volá se k tisku nebo zobrazení náhledu stránky dokumentu.
CView::OnUpdate Zavolá se k oznámení zobrazení, že byl jeho dokument změněn.

Poznámky

Zobrazení je připojené k dokumentu a funguje jako zprostředkovatel mezi dokumentem a uživatelem: zobrazení vykreslí obrázek dokumentu na obrazovce nebo tiskárně a interpretuje uživatelský vstup jako operace s dokumentem.

Zobrazení je podřízeným oknem rámečku. Více než jedno zobrazení může sdílet okno s rámečkem, jako v případě rozděleného okna. Vztah mezi třídou zobrazení, třídou okna rámečku a třídou dokumentu je vytvořen objektem CDocTemplate . Když uživatel otevře nové okno nebo rozdělí existující okno, architektura vytvoří nové zobrazení a připojí ho k dokumentu.

Zobrazení lze připojit pouze k jednomu dokumentu, ale dokument může mít k němu připojeno více zobrazení najednou – například pokud se dokument zobrazí v rozděleném okně nebo v několika podřízených oknech v aplikaci s více rozhraními dokumentů (MDI). Vaše aplikace může podporovat různé typy zobrazení pro daný typ dokumentu; Například program pro zpracování textu může poskytnout kompletní textové zobrazení dokumentu i zobrazení osnovy, které zobrazuje jenom nadpisy oddílů. Tyto různé typy zobrazení se dají umístit do samostatných oken rámečku nebo v samostatných podoknech okna s jedním rámečkem, pokud používáte rozdělovač.

Zobrazení může být zodpovědné za zpracování několika různých typů vstupu, jako je vstup pomocí klávesnice, vstup myši nebo vstup pomocí přetažení, stejně jako příkazy z nabídek, panelů nástrojů nebo posuvníků. Zobrazení přijímá příkazy předané oknem rámce. Pokud zobrazení nezpracuje daný příkaz, předá příkaz příslušnému dokumentu. Stejně jako všechny cíle příkazů zpracovává zobrazení zprávy prostřednictvím mapy zpráv.

Zobrazení je zodpovědné za zobrazení a úpravy dat dokumentu, ale ne za jejich uložení. Dokument poskytuje zobrazení s potřebnými podrobnostmi o svých datech. Přístup k datovým členům dokumentu můžete povolit přímo, nebo můžete do třídy dokumentů zadat členské funkce, které má třída zobrazení volat.

Když se data dokumentu změní, zobrazení zodpovědné za změny obvykle volá CDocument::UpdateAllViews funkci dokumentu, která upozorní všechna ostatní zobrazení voláním OnUpdate členské funkce pro každý z nich. Výchozí implementace OnUpdate zneplatní celou oblast klienta zobrazení. Můžete ji přepsat tak, aby zneplatněla pouze ty oblasti klientské oblasti, které se mapují na upravené části dokumentu.

Chcete-li použít CView, odvození třídy z ní a implementace OnDraw členské funkce pro provádění zobrazení obrazovky. Můžete také použít OnDraw k tisku a náhledu tisku. Architektura zpracovává smyčku tisku pro tisk a zobrazení náhledu dokumentu.

Zobrazení zpracovává zprávy posuvníku CWnd::OnHScroll pomocí funkcí a CWnd::OnVScroll členských funkcí. V těchto funkcích můžete implementovat zpracování zpráv posuvníku nebo můžete použít odvozenou CView třídu CScrollView pro zpracování posouvání za vás.

CScrollViewKromě toho knihovna tříd Microsoft Foundation poskytuje devět dalších tříd odvozených z CView:

  • CCtrlView, zobrazení, které umožňuje použití dokumentu – zobrazení architektury se stromem, seznamem a bohatými ovládacími prvky pro úpravy

  • CDaoRecordView, zobrazení, které zobrazuje záznamy databáze v ovládacích prvcích dialogového okna.

  • CEditView, zobrazení, které poskytuje jednoduchý víceřádkový textový editor. Objekt můžete použít CEditView jako ovládací prvek v dialogovém okně a také zobrazení dokumentu.

  • CFormView, posuvné zobrazení, které obsahuje ovládací prvky dialogového okna a je založené na prostředku šablony dialogového okna.

  • CListView, zobrazení, které umožňuje použití dokumentu – zobrazení architektury s ovládacími prvky seznamu

  • CRecordView, zobrazení, které zobrazuje záznamy databáze v ovládacích prvcích dialogového okna.

  • CRichEditView, zobrazení, které umožňuje použití dokumentu – zobrazení architektury s bohatými ovládacími prvky pro úpravy.

  • CScrollView, zobrazení, které automaticky poskytuje podporu posouvání.

  • CTreeView, zobrazení, které umožňuje použití dokumentu – zobrazení architektury se stromovými ovládacími prvky.

Třída CView má také odvozenou implementační třídu s názvem CPreviewView, která je používána architekturou k provádění náhledu tisku. Tato třída poskytuje podporu funkcí jedinečných pro okno náhledu tisku, jako je panel nástrojů, náhled na jednostránku nebo dvojitou stránku a zvětšení, to znamená zvětšení náhledu obrázku. Pokud nechcete implementovat vlastní rozhraní pro náhled tisku (například pokud chcete podporovat úpravy v režimu náhledu tisku), nemusíte volat ani přepsat žádnou z CPreviewViewčlenských funkcí. Další informace o použití CViewnaleznete v tématu Architektura dokumentů a zobrazení a tisk. Další podrobnosti o přizpůsobení náhledu tisku najdete v technické poznámce 30 .

Hierarchie dědičnosti

CObject

CCmdTarget

CWnd

CView

Požadavky

Záhlaví: afxwin.h

CView::CView

CView Vytvoří objekt.

CView();

Poznámky

Architektura volá konstruktor při vytvoření nového okna rámce nebo rozdělení okna. Přepište členovu OnInitialUpdate funkci tak, aby inicializovala zobrazení po připojení dokumentu.

CView::DoPreparePrinting

Voláním této funkce z přepsání OnPreparePrinting vyvoláte dialogové okno Tisk a vytvořte kontext zařízení tiskárny.

BOOL DoPreparePrinting(CPrintInfo* pInfo);

Parametry

pInfo
Odkazuje na CPrintInfo strukturu, která popisuje aktuální tiskovou úlohu.

Návratová hodnota

Nenulové, pokud může začít tisk nebo náhled tisku; 0, pokud byla operace zrušena.

Poznámky

Chování této funkce závisí na tom, jestli se volá pro tisk nebo náhled tisku (určený m_bPreview členem parametru pInfo ). Pokud se soubor vytiskne, tato funkce vyvolá dialogové okno Tisk pomocí hodnot ve CPrintInfo struktuře, která pInfo odkazuje na; po zavření dialogového okna uživatel vytvoří kontext zařízení tiskárny na základě nastavení uživatele zadaného v dialogovém okně a vrátí tento kontext zařízení prostřednictvím parametru pInfo . Tento kontext zařízení slouží k tisku dokumentu.

Pokud se náhled souboru zobrazí, tato funkce vytvoří kontext zařízení tiskárny pomocí aktuálního nastavení tiskárny; tento kontext zařízení slouží k simulaci tiskárny během náhledu.

CView::GetDocument

Voláním této funkce získáte ukazatel na dokument zobrazení.

CDocument* GetDocument() const;

Návratová hodnota

Ukazatel na CDocument objekt přidružený k zobrazení. NULL pokud není zobrazení připojené k dokumentu.

Poznámky

To vám umožní volat členské funkce dokumentu.

CView::IsSelected

Volá se rozhraním a kontroluje, jestli je vybraná zadaná položka dokumentu.

virtual BOOL IsSelected(const CObject* pDocItem) const;

Parametry

pDocItem
Odkazuje na testovanou položku dokumentu.

Návratová hodnota

Nenulové, pokud je vybrána zadaná položka dokumentu; jinak 0.

Poznámky

Výchozí implementace této funkce vrátí FALSE. Tuto funkci přepište, pokud implementujete výběr pomocí CDocItem objektů. Tuto funkci je nutné přepsat, pokud zobrazení obsahuje položky OLE.

CView::OnActivateFrame

Volá se rozhraním při aktivaci nebo deaktivaci okna rámečku obsahujícího zobrazení.

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

Parametry

nState
Určuje, jestli je okno rámečku aktivováno nebo deaktivováno. Může to být jedna z následujících hodnot:

  • WA_INACTIVE Okno rámečku se deaktivuje.

  • WA_ACTIVE Okno rámečku se aktivuje jinou metodou než kliknutím myši (například pomocí rozhraní klávesnice pro výběr okna).

  • WA_CLICKACTIVE Okno rámečku se aktivuje kliknutím myši.

pFrameWnd
Ukazatel na okno rámečku, které se má aktivovat.

Poznámky

Tuto členovou funkci přepište, pokud chcete provést speciální zpracování při aktivaci nebo deaktivaci okna rámce přidruženého k zobrazení. Toto přepsání provede například CFormView při uložení a obnovení ovládacího prvku, který má fokus.

CView::OnActivateView

Volá se rozhraním při aktivaci nebo deaktivaci zobrazení.

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

Parametry

bActivate
Určuje, jestli se zobrazení aktivuje nebo deaktivuje.

pActivateView
Odkazuje na aktivovaný objekt zobrazení.

pDeactiveView
Odkazuje na objekt zobrazení, který je deaktivován.

Poznámky

Výchozí implementace této funkce nastaví fokus na aktivované zobrazení. Tuto funkci přepište, pokud chcete provést speciální zpracování při aktivaci nebo deaktivaci zobrazení. Pokud například chcete poskytnout speciální vizuální upozornění, která rozlišují aktivní zobrazení od neaktivních zobrazení, prozkoumáte bActivate parametr a odpovídajícím způsobem aktualizujete vzhled zobrazení.

Parametry pActivateView ukazují pDeactiveView na stejné zobrazení, pokud je okno hlavního rámce aplikace aktivováno beze změny v aktivním zobrazení – například pokud je fokus přenesen z jiné aplikace do této aplikace, nikoli z jednoho zobrazení do druhého v rámci aplikace nebo při přepínání mezi podřízenými okny MDI. Díky tomu může zobrazení v případě potřeby znovu realizovat svou paletu.

Tyto parametry se liší při CFrameWnd::SetActiveView zavolání v zobrazení, které se liší od toho, co CFrameWnd::GetActiveView by vrátilo. K tomu dochází nejčastěji u oken rozdělovače.

CView::OnBeginPrinting

Volal ho architektura na začátku úlohy náhledu tisku nebo tisku, po OnPreparePrinting zavolání.

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

Parametry

pDC
Odkazuje na kontext zařízení tiskárny.

pInfo
Odkazuje na CPrintInfo strukturu, která popisuje aktuální tiskovou úlohu.

Poznámky

Výchozí implementace této funkce nic nedělá. Tuto funkci přepište tak, aby přidělovala prostředky GDI, jako jsou pera nebo písma potřebná speciálně pro tisk. Vyberte objekty GDI v kontextu zařízení v rámci OnPrint členské funkce pro každou stránku, která je používá. Pokud k zobrazení obrazovky i tisku používáte stejný objekt zobrazení, použijte samostatné proměnné pro prostředky GDI potřebné pro každé zobrazení; díky tomu můžete během tisku aktualizovat obrazovku.

Pomocí této funkce můžete také provádět inicializace, které závisí na vlastnostech kontextu zařízení tiskárny. Například počet stránek potřebných k tisku dokumentu může záviset na nastavení, která uživatel zadal v dialogovém okně Tisk (například délku stránky). V takové situaci nelze určit délku dokumentu ve OnPreparePrinting členské funkci, kde byste to normálně udělali. Je nutné počkat, až se na základě nastavení dialogového okna vytvoří kontext zařízení tiskárny. OnBeginPrinting je první přepisovatelná funkce, která poskytuje přístup k objektu CDC představujícímu kontext zařízení tiskárny, takže můžete nastavit délku dokumentu z této funkce. Všimněte si, že pokud není délka dokumentu v tuto chvíli určena, posuvník se během náhledu tisku nezobrazí.

CView::OnDragEnter

Volá se rozhraním, když myš poprvé přejde do oblasti, která se nesouvá v cílovém okně.

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

Parametry

pDataObject
Odkazuje na COleDataObject přetaženou oblast zobrazení.

dwKeyState
Obsahuje stav modifikačních klíčů. Jedná se o kombinaci libovolného počtu následujících položek: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTON, a MK_RBUTTON.

point
Aktuální umístění myši vzhledem k klientské oblasti zobrazení.

Návratová hodnota

Hodnota z výčtového DROPEFFECT typu, která označuje typ přetažení, ke kterému by mohlo dojít, pokud uživatel vynechal objekt na této pozici. Typ poklesu obvykle závisí na aktuálním stavu klíče označeném dwKeyState. Standardní mapování klíčových hodnot na DROPEFFECT hodnoty je:

  • DROPEFFECT_NONE Datový objekt nelze v tomto okně vynechat.

  • DROPEFFECT_LINK for MK_CONTROL|MK_SHIFT Vytvoří propojení mezi objektem a jeho serverem.

  • DROPEFFECT_COPY pro MK_CONTROL Vytvoří kopii vyřazeného objektu.

  • DROPEFFECT_MOVE pro MK_ALT Vytvoří kopii vynechaného objektu a odstraní původní objekt. Toto je obvykle výchozí efekt přetažení, když zobrazení může přijmout tento datový objekt.

Další informace naleznete v ukázce OCLIENTupřesňujících konceptů mfc .

Poznámky

Výchozí implementace je udělat nic a vrátit DROPEFFECT_NONE.

Přepište tuto funkci tak, aby se připravila na budoucí volání OnDragOver členské funkce. Všechna data požadovaná z datového objektu by se v tuto chvíli měla načíst pro pozdější použití v OnDragOver členské funkci. Zobrazení by se teď také mělo aktualizovat, aby uživateli poskytlo vizuální zpětnou vazbu. Další informace naleznete v článku OLE přetažení: Implementace cíle přetažení.

CView::OnDragLeave

Volá se rozhraním během operace přetažení, když je myš přesunuta z platné oblasti pro přetažení pro toto okno.

virtual void OnDragLeave();

Poznámky

Tuto funkci přepište, pokud aktuální zobrazení potřebuje vyčistit všechny akce provedené během OnDragEnter volání nebo OnDragOver volání, například odebrání zpětné vazby uživatele vizuálu během přetažení a vyřazení objektu.

CView::OnDragOver

Volá se rozhraním během operace přetažení, když se myš přesune přes cílové okno.

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

Parametry

pDataObject
Odkazuje na COleDataObject přetahování přes cíl přetažení.

dwKeyState
Obsahuje stav modifikačních klíčů. Jedná se o kombinaci libovolného počtu následujících položek: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTON, a MK_RBUTTON.

point
Aktuální umístění myši vzhledem k oblasti klienta zobrazení.

Návratová hodnota

Hodnota z výčtového DROPEFFECT typu, která označuje typ přetažení, ke kterému by mohlo dojít, pokud uživatel vynechal objekt na této pozici. Typ poklesu často závisí na aktuálním stavu klíče, jak je uvedeno .dwKeyState Standardní mapování klíčových hodnot na DROPEFFECT hodnoty je:

  • DROPEFFECT_NONE Datový objekt nelze v tomto okně vynechat.

  • DROPEFFECT_LINK for MK_CONTROL|MK_SHIFT Vytvoří propojení mezi objektem a jeho serverem.

  • DROPEFFECT_COPY pro MK_CONTROL Vytvoří kopii vyřazeného objektu.

  • DROPEFFECT_MOVE pro MK_ALT Vytvoří kopii vynechaného objektu a odstraní původní objekt. Toto je obvykle výchozí efekt přetažení, když zobrazení může přijmout datový objekt.

Další informace naleznete v ukázce OCLIENTupřesňujících konceptů mfc .

Poznámky

Výchozí implementace je udělat nic a vrátit DROPEFFECT_NONE.

Tuto funkci přepište, aby uživateli během operace přetažení poskytla vizuální zpětnou vazbu. Vzhledem k tomu, že se tato funkce volá nepřetržitě, měl by být veškerý kód obsažený v ní co nejvíce optimalizovaný. Další informace naleznete v článku OLE přetažení: Implementace cíle přetažení.

CView::OnDragScroll

Volá se rozhraním před voláním OnDragEnter nebo OnDragOver určením, zda je bod v oblasti posouvání.

virtual DROPEFFECT OnDragScroll(
    DWORD dwKeyState,
    CPoint point);

Parametry

dwKeyState
Obsahuje stav modifikačních klíčů. Jedná se o kombinaci libovolného počtu následujících položek: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTON, a MK_RBUTTON.

point
Obsahuje umístění kurzoru v pixelech vzhledem k obrazovce.

Návratová hodnota

Hodnota z výčtového DROPEFFECT typu, která označuje typ přetažení, ke kterému by mohlo dojít, pokud uživatel vynechal objekt na této pozici. Typ poklesu obvykle závisí na aktuálním stavu klíče označeném dwKeyState. Standardní mapování klíčových hodnot na DROPEFFECT hodnoty je:

  • DROPEFFECT_NONE Datový objekt nelze v tomto okně vynechat.

  • DROPEFFECT_LINK for MK_CONTROL|MK_SHIFT Vytvoří propojení mezi objektem a jeho serverem.

  • DROPEFFECT_COPY pro MK_CONTROL Vytvoří kopii vyřazeného objektu.

  • DROPEFFECT_MOVE pro MK_ALT Vytvoří kopii vynechaného objektu a odstraní původní objekt.

  • DROPEFFECT_SCROLL Označuje, že operace posouvání přetažením pravděpodobně nastane nebo se vyskytuje v cílovém zobrazení.

Další informace naleznete v ukázce OCLIENTupřesňujících konceptů mfc .

Poznámky

Tuto funkci přepište, pokud chcete pro tuto událost poskytnout zvláštní chování. Výchozí implementace automaticky posune okna, když je kurzor přetažen do výchozí oblasti posouvání uvnitř ohraničení každého okna. Další informace naleznete v článku OLE přetažení: Implementace cíle přetažení.

CView::OnDraw

Volá se rozhraním pro vykreslení obrázku dokumentu.

virtual void OnDraw(CDC* pDC) = 0;

Parametry

pDC
Odkazuje na kontext zařízení, který se má použít k vykreslení obrázku dokumentu.

Poznámky

Architektura volá tuto funkci k provádění zobrazení, tisku a náhledu obrazovky a v každém případě předává jiný kontext zařízení. Neexistuje žádná výchozí implementace.

Chcete-li zobrazit dokument, musíte tuto funkci přepsat. Volání rozhraní grafického zařízení (GDI) můžete provádět pomocí objektu CDC pDC , na který odkazuje parametr. Před kreslením můžete vybrat prostředky GDI, jako jsou pera nebo písma, do kontextu zařízení a potom je zrušit. Kód výkresu může být často nezávislý na zařízení; to znamená, že nevyžaduje informace o tom, jaký typ zařízení zobrazuje obrázek.

Chcete-li optimalizovat výkres, zavolejte RectVisible členovou funkci kontextu zařízení, abyste zjistili, zda bude daný obdélník vykreslen. Pokud potřebujete rozlišovat mezi normálním displejem a tiskem, zavolejte IsPrinting členovu funkci kontextu zařízení.

CView::OnDrop

Volá se rozhraním, když uživatel uvolní datový objekt přes platný cíl přetažení.

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

Parametry

pDataObject
Odkazuje na COleDataObject ten, který se vyřadí do cíle přetažení.

dropEffect
Efekt poklesu, který uživatel požadoval.

  • DROPEFFECT_COPY Vytvoří kopii odstraněného datového objektu.

  • DROPEFFECT_MOVE Přesune datový objekt do aktuálního umístění myši.

  • DROPEFFECT_LINK Vytvoří propojení mezi datovým objektem a jeho serverem.

point
Aktuální umístění myši vzhledem k oblasti klienta zobrazení.

Návratová hodnota

Nenulové, pokud byl pokles úspěšný; jinak 0.

Poznámky

Výchozí implementace nedělá nic a vrací FALSE.

Přepište tuto funkci tak, aby implementovaly efekt přetažení OLE do klientské oblasti zobrazení. Datový objekt je možné prozkoumat pomocí pDataObject formátů dat schránky a vyřazených dat v zadaném bodě.

Poznámka:

Architektura tuto funkci nevolá, pokud v této třídě zobrazení existuje přepsání OnDropEx .

CView::OnDropEx

Volá se rozhraním, když uživatel uvolní datový objekt přes platný cíl přetažení.

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

Parametry

pDataObject
Odkazuje na COleDataObject ten, který se vyřadí do cíle přetažení.

dropDefault
Efekt, který uživatel zvolil pro výchozí operaci přetažení na základě aktuálního stavu klíče. Může to být DROPEFFECT_NONE. Efekty přetažení jsou popsány v části Poznámky.

dropList
Seznam efektů přetažení, které zdroj přetažení podporuje. Hodnoty efektu přetažení lze kombinovat pomocí operace bitové operace OR ( |). Efekty přetažení jsou popsány v části Poznámky.

point
Aktuální umístění myši vzhledem k oblasti klienta zobrazení.

Návratová hodnota

Efekt přetažení, který byl výsledkem pokusu o odstranění v umístění určeném parametrem point. To musí být jedna z hodnot uvedených v dropEffectList. Efekty přetažení jsou popsány v části Poznámky.

Poznámky

Výchozí implementace je nedělat nic a vrátit fiktivní hodnotu (-1), která indikuje, že architektura by měla volat obslužnou rutinu OnDrop .

Přepište tuto funkci tak, aby implementovaly efekt přetažení pravého tlačítka myši. Po uvolnění pravého tlačítka myši se obvykle zobrazí nabídka voleb.

Přepsání OnDropEx dotazu na pravé tlačítko myši. Stav pravého tlačítka myši můžete zavolat GetKeyState nebo uložit z OnDragEnter obslužné rutiny.

  • Pokud je pravé tlačítko myši mimo provoz, mělo by se v přepsání zobrazit místní nabídka, která nabízí podporu rozevíracích efektů zdroje.

    • Prozkoumejte dropList , jestli chcete zjistit efekty přetažení podporované zdrojem přetažení. Povolte pouze tyto akce v místní nabídce.

    • Slouží SetMenuDefaultItem k nastavení výchozí akce na dropDefaultzákladě .

    • Nakonec proveďte akci označenou výběrem uživatele z místní nabídky.

  • Pokud pravé tlačítko myši není mimo provoz, mělo by se toto přepsání zpracovat jako standardní žádost o uvolnění. Použijte efekt přetažení zadaný v dropDefault. Případně může přepsání vrátit fiktivní hodnotu (-1), která indikuje, že OnDrop bude zpracovávat tuto operaci odstranění.

Slouží pDataObject k prozkoumání COleDataObject formátu dat schránky a dat vynechaných v zadaném bodě.

Efekty přetažení popisují akci přidruženou k operaci přetažení. Podívejte se na následující seznam efektů přetažení:

  • DROPEFFECT_NONE Pokles by nebyl povolen.

  • DROPEFFECT_COPY Byla by provedena operace kopírování.

  • DROPEFFECT_MOVE Byla by provedena operace přesunutí.

  • DROPEFFECT_LINK Vytvoří se propojení z vyřazených dat s původními daty.

  • DROPEFFECT_SCROLL Označuje, že operace posouvání přetažením se chystá nastat nebo se vyskytuje v cíli.

Další informace o nastavení výchozího příkazu nabídky najdete SetMenuDefaultItem v sadě Windows SDK a CMenu::GetSafeHmenu v tomto svazku.

CView::OnEndPrinting

Volá se rozhraním po vytištění nebo zobrazení náhledu dokumentu.

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

Parametry

pDC
Odkazuje na kontext zařízení tiskárny.

pInfo
Odkazuje na CPrintInfo strukturu, která popisuje aktuální tiskovou úlohu.

Poznámky

Výchozí implementace této funkce nic nedělá. Přepište tuto funkci tak, aby se uvolnily všechny prostředky GDI, které jste přidělili v OnBeginPrinting členské funkci.

CView::OnEndPrintPreview

Volá se rozhraním, když uživatel ukončí režim náhledu tisku.

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

Parametry

pDC
Odkazuje na kontext zařízení tiskárny.

pInfo
Odkazuje na CPrintInfo strukturu, která popisuje aktuální tiskovou úlohu.

point
Určuje bod na stránce, která byla naposledy zobrazena v režimu náhledu.

pView
Odkazuje na objekt zobrazení použitý k zobrazení náhledu.

Poznámky

Výchozí implementace této funkce volá OnEndPrinting členovou funkci a obnoví okno hlavního rámce do stavu, ve který byl před zahájením náhledu tisku. Tuto funkci přepište tak, aby se při ukončení režimu náhledu provádělo speciální zpracování. Pokud například chcete zachovat pozici uživatele v dokumentu při přechodu z režimu náhledu na normální režim zobrazení, můžete přejít na pozici popsanou parametrem point a m_nCurPage členem CPrintInfo struktury, na kterou pInfo parametr odkazuje.

Vždy volejte základní verzi OnEndPrintPreview třídy z přepsání, obvykle na konci funkce.

CView::OnInitialUpdate

Volané architekturou po zobrazení je nejprve připojen k dokumentu, ale před zobrazením se zpočátku zobrazí.

virtual void OnInitialUpdate();

Poznámky

Výchozí implementace této funkce volá OnUpdate členovou funkci bez informací nápovědy (to znamená, že používá výchozí hodnoty 0 pro lHint parametr a NULL parametr pHint ). Tuto funkci přepište tak, aby prováděla jednorázovou inicializaci, která vyžaduje informace o dokumentu. Pokud má vaše aplikace například dokumenty s pevnou velikostí, můžete pomocí této funkce inicializovat limity posouvání zobrazení na základě velikosti dokumentu. Pokud vaše aplikace podporuje dokumenty s proměnlivou velikostí, použijte OnUpdate k aktualizaci limitů posouvání při každé změně dokumentu.

CView::OnPrepareDC

Volá se rozhraním před OnDraw zavoláním členské funkce pro zobrazení obrazovky a před OnPrint zavoláním členské funkce pro každou stránku během tisku nebo náhledu tisku.

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

Parametry

pDC
Odkazuje na kontext zařízení, který se má použít k vykreslení obrázku dokumentu.

pInfo
Odkazuje na CPrintInfo strukturu, která popisuje aktuální tiskovou úlohu, pokud OnPrepareDC je volána pro tisk nebo náhled tisku; m_nCurPage člen určuje stránku, která se má vytisknout. Tento parametr se NULL OnPrepareDC volá pro zobrazení obrazovky.

Poznámky

Výchozí implementace této funkce nedělá nic, pokud je volána funkce pro zobrazení obrazovky. Tato funkce je však přepsána v odvozených třídách, například CScrollView, k úpravě atributů kontextu zařízení; v důsledku toho byste měli vždy volat implementaci základní třídy na začátku přepsání.

Pokud je funkce volána k tisku, výchozí implementace prozkoumá informace o stránce uložené v parametru pInfo . Pokud nebyla zadána délka dokumentu, předpokládá se, OnPrepareDC že je dokument dlouhý na jednu stránku a zastaví smyčku tisku po vytištění jedné stránky. Funkce zastaví smyčku tisku nastavením m_bContinuePrinting člena struktury na FALSE.

Přepsat OnPrepareDC z některého z následujících důvodů:

  • Chcete-li upravit atributy kontextu zařízení podle potřeby pro zadanou stránku. Pokud například potřebujete nastavit režim mapování nebo jiné vlastnosti kontextu zařízení, udělejte to v této funkci.

  • Chcete-li provést stránkování v čase tisku. Při tisku obvykle určíte délku dokumentu pomocí OnPreparePrinting členské funkce. Pokud ale předem nevíte, jak dlouho dokument je (například při tisku nedefinovaného počtu záznamů z databáze), přepište OnPrepareDC test na konec dokumentu při tisku. Pokud není více dokumentu k vytištění, nastavte m_bContinuePrinting člen CPrintInfo struktury na FALSE.

  • Chcete-li odeslat řídicí kódy do tiskárny na stránce po stránkách. Chcete-li odeslat řídicí kódy z OnPrepareDC, zavolejte Escape člen funkce parametru pDC .

Na začátku přepsání volejte verzi OnPrepareDC základní třídy.

Příklad

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

Volá se rozhraním před tiskem nebo náhledem dokumentu.

virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);

Parametry

pInfo
Odkazuje na CPrintInfo strukturu, která popisuje aktuální tiskovou úlohu.

Návratová hodnota

Nenulové zahájení tisku; 0, pokud byla úloha tisku zrušena.

Poznámky

Výchozí implementace nic nedělá.

Chcete-li povolit tisk a náhled tisku, musíte tuto funkci přepsat. DoPreparePrinting Volání členské funkce, předání parametru pInfo a vrácení jeho návratové hodnoty; DoPreparePrinting zobrazí dialogové okno Tisk a vytvoří kontext zařízení tiskárny. Chcete-li inicializovat dialogové okno Tisk s hodnotami kromě výchozích hodnot, přiřaďte hodnoty členům pInfo. Pokud například znáte délku dokumentu, předejte hodnotu Do SetMaxPage členské funkce pInfo před voláním DoPreparePrinting. Tato hodnota se zobrazí v poli To: v části Rozsah dialogového okna Tisk.

DoPreparePrinting nezobrazuje dialogové okno Tisk pro úlohu náhledu. Pokud chcete obejít dialogové okno Tisk pro tiskovou úlohu, zkontrolujte, jestli m_bPreview je FALSE členem, a pak ho pInfo nastavte před TRUE předáním na DoPreparePrinting; resetujte ho na FALSE později.

Pokud potřebujete provést inicializace, které vyžadují přístup k objektu CDC představujícímu kontext tiskárny (například pokud potřebujete znát velikost stránky před zadáním délky dokumentu), přepište členovou OnBeginPrinting funkci.

Pokud chcete nastavit hodnotu m_nNumPreviewPages nebo m_strPageDesc členy parametru pInfo , udělejte to po volání DoPreparePrinting. Členská DoPreparePrinting funkce se nastaví m_nNumPreviewPages na hodnotu nalezenou v aplikaci . Soubor INI a nastaví m_strPageDesc se na výchozí hodnotu.

Příklad

Přepsat OnPreparePrinting a volat DoPreparePrinting z přepsání tak, aby architektura zobrazila dialogové okno Tisk a vytvořit tiskárnu DC za vás.

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

Pokud víte, kolik stránek dokument obsahuje, nastavte maximální počet stránek OnPreparePrinting před voláním DoPreparePrinting. Architektura zobrazí maximální počet stránek v poli Komu dialogového okna Tisk.

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

CView::OnPrint

Volá se rozhraním pro tisk nebo zobrazení náhledu stránky dokumentu.

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

Parametry

pDC
Odkazuje na kontext zařízení tiskárny.

pInfo
Odkazuje na CPrintInfo strukturu, která popisuje aktuální tiskovou úlohu.

Poznámky

Pro každou stránku, která se vytiskne, architektura volá tuto funkci ihned po volání OnPrepareDC členské funkce. Stránka, na kterou se tiskne, je určena m_nCurPage členem CPrintInfo struktury, která pInfo odkazuje na. Výchozí implementace volá členovu OnDraw funkci a předá ji kontextu zařízení tiskárny.

Tuto funkci přepište z některého z následujících důvodů:

  • Povolení tisku vícestránkových dokumentů. Vykreslujte jenom část dokumentu, která odpovídá aktuálně vytištěné stránce. Pokud k vykreslení používáte OnDraw , můžete upravit původ oblasti zobrazení tak, aby se vytiskla jenom příslušná část dokumentu.

  • Pokud chcete, aby vytištěný obrázek vypadal jinak než na obrázku obrazovky (to znamená, že pokud vaše aplikace není WYSIWYG). Místo předání kontextu OnDrawzařízení tiskárny použijte kontext zařízení k vykreslení obrázku pomocí atributů, které se nezobrazují na obrazovce.

    Pokud potřebujete prostředky GDI pro tisk, který nepoužíváte pro zobrazení obrazovky, vyberte je před kreslením do kontextu zařízení a zrušte jejich výběr. Tyto zdroje GDI by měly být přiděleny a OnBeginPrinting uvolněny v OnEndPrinting.

  • Implementace záhlaví nebo zápatí Vykreslování můžete přesto použít OnDraw tak, že omezíte oblast, na kterou se dá vytisknout.

m_rectDraw Člen parametru pInfo popisuje tisknutelnou oblast stránky v logických jednotkách.

Nevyvolávejte OnPrepareDC v přepsání OnPrint; architektura volá OnPrepareDC automaticky před voláním OnPrint.

Příklad

Následuje kostra přepsané OnPrint funkce:

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

Další příklad najdete v tématu CRichEditView::PrintInsideRect.

CView::OnScroll

Volá se rozhraním, aby bylo možné zjistit, jestli je možné posouvání.

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

Parametry

nScrollCode
Posuvníkový kód, který označuje požadavek uživatele na posouvání. Tento parametr se skládá ze dvou částí: bajt s nízkým pořadím, který určuje typ posouvání vodorovně a bajt s vysokým pořadím, který určuje typ posouvání svisle:

  • SB_BOTTOM Posune se dolů.

  • SB_LINEDOWN Posune o jeden řádek dolů.

  • SB_LINEUP Posune o jeden řádek nahoru.

  • SB_PAGEDOWN Posune o jednu stránku dolů.

  • SB_PAGEUP Posune o jednu stránku nahoru.

  • SB_THUMBTRACK Přetáhne posuvník na zadanou pozici. Aktuální pozice je zadána v nPos.

  • SB_TOP Posune se nahoru.

nPos
Obsahuje aktuální pozici posuvníku, pokud je SB_THUMBTRACKkód posuvníku ; jinak se nepoužívá. V závislosti na počátečním rozsahu nPos posouvání může být záporné a v případě potřeby by mělo být přetypování na řadu int .

bDoScroll
Určuje, zda byste měli provést zadanou akci posouvání. Pokud TRUEby se mělo posunout, mělo by dojít k posouvání; pokud FALSEby se nemělo posunout.

Návratová hodnota

Pokud bDoScroll je TRUE a zobrazení bylo skutečně posunuto, vraťte nenulový; jinak 0. Pokud bDoScroll ano FALSE, vraťte hodnotu, kterou byste vrátili, pokud bDoScroll by byla TRUE, i když ve skutečnosti neprovádíte posouvání.

Poznámky

V jednom případě je tato funkce volána architekturou s bDoScroll nastavenou na TRUE , když zobrazení obdrží zprávu posuvníku. V takovém případě byste měli zobrazení skutečně posunout. V druhém případě je tato funkce volána s nastavenou bDoScroll na FALSE , když je položka OLE původně přetažena do oblasti automatického posouvání cíle přetažení před tím, než se skutečně provede posouvání. V takovém případě byste neměli zobrazení skutečně posouvat.

CView::OnScrollBy

Volá se podle architektury, když uživatel zobrazí oblast nad rámec současného zobrazení dokumentu, a to buď přetažením položky OLE proti aktuálním ohraničením zobrazení, nebo manipulací se svislými nebo vodorovnými posuvníky.

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

Parametry

sizeScroll
Počet pixelů posunutý vodorovně a svisle.

bDoScroll
Určuje, zda probíhá posouvání zobrazení. Pokud TRUEse posouvání provede; pokud FALSEse posouvání neprojeví.

Návratová hodnota

Nenulové, pokud bylo možné zobrazení posunout; jinak 0.

Poznámky

V odvozenýchtřídch Tato funkce se automaticky volá CWnd::OnHScroll a CWnd::OnVScroll provádí skutečný požadavek na posouvání.

Výchozí implementace této metody nezmění zobrazení, ale pokud není volána, zobrazení se nebude posouvat v -odvozené CScrollViewtřídě.

Pokud šířka nebo výška dokumentu překročí 32767 pixelů, posouvání za 32767 selže, protože OnScrollBy je volán s neplatným sizeScroll argumentem.

CView::OnUpdate

Volal rámec po úpravě dokumentu zobrazení; tato funkce je volána CDocument::UpdateAllViews a umožňuje zobrazení aktualizovat jeho zobrazení tak, aby odráželo tyto změny.

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

Parametry

pSender
Odkazuje na zobrazení, které dokument upravilo, nebo NULL pokud se mají aktualizovat všechna zobrazení.

lHint
Obsahuje informace o změnách.

pHint
Odkazuje na objekt, který ukládá informace o změnách.

Poznámky

Označuje se také jako výchozí implementace OnInitialUpdate. Výchozí implementace zneplatní celou oblast klienta a označí ji pro malování při přijetí další WM_PAINT zprávy. Tuto funkci přepište, pokud chcete aktualizovat pouze oblasti, které se mapují na upravené části dokumentu. K tomu je nutné předat informace o úpravách pomocí parametrů nápovědy.

Pokud chcete použít lHint, definujte speciální hodnoty nápovědy, obvykle bitovou masku nebo výčtový typ a předejte dokument jednu z těchto hodnot. Chcete-li použít pHint, odvození třídy nápovědy z CObject a mít dokument předat ukazatel na objekt nápovědy; při přepsání OnUpdate, pomocí CObject::IsKindOf členské funkce určit typ spuštění objektu nápovědy.

Obvykle byste neměli provádět žádné výkresy přímo z OnUpdate. Místo toho určete obdélník popisující souřadnice zařízení, oblast, která vyžaduje aktualizaci; předat tento obdélník do CWnd::InvalidateRect. To způsobí, že při příštím přijetí zprávy dojde k obrazu WM_PAINT .

Pokud lHint je hodnota 0 a pHint je NULL, dokument odeslal obecné oznámení o aktualizaci. Pokud zobrazení obdrží obecné oznámení o aktualizaci nebo pokud nedokáže dekódovat rady, měla by zneplatnit celou oblast klienta.

Viz také

Mfc – ukázka MDIDOCVW
CWnd Třída
Graf hierarchie
CWnd Třída
CFrameWnd Třída
CSplitterWnd Třída
CDC Třída
CDocTemplate Třída
CDocument Třída