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.
CScrollView
Kromě 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 úpravyCDaoRecordView
, 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žítCEditView
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 seznamuCRecordView
, 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í CView
naleznete 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
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
forMK_CONTROL|MK_SHIFT
Vytvoří propojení mezi objektem a jeho serverem.DROPEFFECT_COPY
proMK_CONTROL
Vytvoří kopii vyřazeného objektu.DROPEFFECT_MOVE
proMK_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 OCLIENT
upř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
forMK_CONTROL|MK_SHIFT
Vytvoří propojení mezi objektem a jeho serverem.DROPEFFECT_COPY
proMK_CONTROL
Vytvoří kopii vyřazeného objektu.DROPEFFECT_MOVE
proMK_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 OCLIENT
upř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
forMK_CONTROL|MK_SHIFT
Vytvoří propojení mezi objektem a jeho serverem.DROPEFFECT_COPY
proMK_CONTROL
Vytvoří kopii vyřazeného objektu.DROPEFFECT_MOVE
proMK_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 OCLIENT
upř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 nadropDefault
zá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, žeOnDrop
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šteOnPrepareDC
test na konec dokumentu při tisku. Pokud není více dokumentu k vytištění, nastavtem_bContinuePrinting
členCPrintInfo
struktury naFALSE
.Chcete-li odeslat řídicí kódy do tiskárny na stránce po stránkách. Chcete-li odeslat řídicí kódy z
OnPrepareDC
, zavolejteEscape
člen funkce parametrupDC
.
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
OnDraw
zaří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 vOnEndPrinting
.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 vnPos
.SB_TOP
Posune se nahoru.
nPos
Obsahuje aktuální pozici posuvníku, pokud je SB_THUMBTRACK
kó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 TRUE
by se mělo posunout, mělo by dojít k posouvání; pokud FALSE
by 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 TRUE
se posouvání provede; pokud FALSE
se 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é CScrollView
tří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