Megosztás a következőn keresztül:


CView osztály

Megjegyzés:

A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.

A felhasználó által definiált nézetosztályok alapvető funkcióit biztosítja.

Szemantika

class AFX_NOVTABLE CView : public CWnd

Tagok

Védett konstruktorok

Név Description
CView::CView Egy CView objektumot hoz létre.

Nyilvános módszerek

Név Description
CView::DoPreparePrinting Megjeleníti a Nyomtatás párbeszédpanelt, és létrehozza a nyomtatóeszköz környezetét; hívás a tagfüggvény felülírásakor OnPreparePrinting .
CView::GetDocument A nézethez társított dokumentumot adja vissza.
CView::IsSelected Ellenőrzi, hogy ki van-e jelölve egy dokumentumelem. Az OLE-támogatáshoz szükséges.
CView::OnDragEnter Akkor hívjuk meg, amikor egy elemet először húzunk a nézet húzási régiójába.
CView::OnDragLeave Akkor hívható meg, ha egy húzott elem elhagyja a nézet húzási régióját.
CView::OnDragOver Akkor hívjuk meg, ha egy elemet húzunk át egy nézet húzási régióján.
CView::OnDragScroll Annak megállapításához, hogy a kurzor az ablak görgetési régiójába van-e húzva.
CView::OnDrop Akkor hívható meg, ha egy elemet egy nézet húzási régiójába dobott, alapértelmezett kezelő.
CView::OnDropEx Akkor hívható meg, ha egy elemet egy nézet húzási régiójába, az elsődleges kezelőbe vetettek.
CView::OnInitialUpdate Egy nézet dokumentumhoz való első csatolása után hívjuk meg.
CView::OnPrepareDC A rendszer a OnDraw tagfüggvény képernyőmegjelenítésre való meghívása előtt hívja meg, vagy a OnPrint tagfüggvény nyomtatásra vagy nyomtatási képre van meghívva.
CView::OnScroll Akkor hívható meg, ha az OLE-elemek a nézet határain túlra húzódnak.
CView::OnScrollBy Az aktív helyi OLE-elemeket tartalmazó nézet görgetésekor hívható meg.

Védett metódusok

Név Description
CView::OnActivateFrame A nézetet tartalmazó keretablak aktiválása vagy inaktiválása esetén hívható meg.
CView::OnActivateView A nézet aktiválásakor hívható meg.
CView::OnBeginPrinting A nyomtatási feladat indításakor hívható meg; felülbírálást a grafikus eszköz felületének (GDI) erőforrásainak lefoglalásához.
CView::OnDraw A program meghívja a dokumentum képének megjelenítésére képernyőmegjelenítésre, nyomtatásra vagy nyomtatási képre. Implementálásra van szükség.
CView::OnEndPrinting A nyomtatási feladat befejeződésekor hívható meg; felülbírálást a GDI-erőforrások felszabadításához.
CView::OnEndPrintPreview Az előnézeti mód kilépésekor hívható meg.
CView::OnPreparePrinting A dokumentum nyomtatása vagy előnézete előtt hívható meg; felülbírálás a Nyomtatás párbeszédpanel inicializálásához.
CView::OnPrint A dokumentum egy oldalának nyomtatásához vagy előnézetéhez hívható meg.
CView::OnUpdate Meghívva, hogy értesítse a nézetet, hogy a dokumentuma módosult.

Megjegyzések

A nézet egy dokumentumhoz van csatolva, és közvetítőként működik a dokumentum és a felhasználó között: a nézet a dokumentum képét jeleníti meg a képernyőn vagy a nyomtatón, és a felhasználói bemenetet műveletekként értelmezi a dokumentumon.

A nézet egy keretablak gyermeke. Egynél több nézet is megoszthat egy keretablakot, mint egy elválasztó ablak esetén. A nézetosztály, a keretablak-osztály és a dokumentumosztály közötti kapcsolatot egy CDocTemplate objektum határozza meg. Amikor a felhasználó megnyit egy új ablakot, vagy feloszt egy meglévőt, a keretrendszer létrehoz egy új nézetet, és csatolja azt a dokumentumhoz.

Egy nézet csak egy dokumentumhoz csatolható, de egy dokumentumhoz egyszerre több nézet is csatolható – például ha a dokumentum egy elválasztó ablakban vagy több gyermekablakban jelenik meg egy több dokumentumfelületi (MDI-) alkalmazásban. Az alkalmazás különböző típusú nézeteket támogat egy adott dokumentumtípushoz; Egy szövegszerkesztő program például egy dokumentum teljes szöveges nézetét és egy vázlatnézetet is biztosít, amely csak a szakaszfejléceket jeleníti meg. Ezek a nézettípusok külön keretablakokban vagy egy keretablak külön ablaktábláiban helyezhetők el, ha elválasztóablakot használ.

A nézet számos különböző típusú bemenetet kezelhet, például billentyűzetbemenetet, egérbemenetet vagy bevitelt húzással, valamint menükből, eszköztárakból vagy görgetősávokból származó parancsokat. A nézet a keretablak által továbbított parancsokat fogadja. Ha a nézet nem kezel egy adott parancsot, továbbítja a parancsot a társított dokumentumnak. Mint minden parancscél, a nézet is egy üzenettérképen keresztül kezeli az üzeneteket.

A nézet felelős a dokumentum adatainak megjelenítéséért és módosításáért, de nem az adatok tárolásáért. A dokumentum tartalmazza a nézetet az adataival kapcsolatos szükséges részletekkel. Engedélyezheti, hogy a nézet közvetlenül hozzáférjen a dokumentum adattagjaihoz, vagy tagfüggvényeket adhat meg a dokumentumosztályban a meghívandó nézetosztály számára.

Amikor egy dokumentum adatai megváltoznak, a módosításokért felelős nézet általában meghívja a CDocument::UpdateAllViews dokumentum függvényét, amely a tagfüggvény meghívásával OnUpdate értesíti az összes többi nézetet. Az alapértelmezett implementáció OnUpdate érvényteleníti a nézet teljes kliensfelületét. Felülírhatja ezt, hogy csak a kliens terület azon régióit érvénytelenítse, amelyek a dokumentum módosított részeivel párosítva vannak.

A használathoz CViewszármaztatassunk belőle egy osztályt, és implementáljuk a tagfüggvényt a OnDraw képernyőmegjelenítés végrehajtásához. Nyomtatási és nyomtatási előnézetet is OnDraw végrehajthat. A keretrendszer kezeli a nyomtatási ciklust a dokumentum nyomtatásához és előnézetéhez.

A nézet a görgetősáv-üzeneteket a tagfüggvényekkel CWnd::OnHScrollCWnd::OnVScroll kezeli. Ezekben a függvényekben implementálhatja a görgetősávos üzenetkezelést, vagy használhatja a származtatott osztályt CScrollView a CView görgetés kezeléséhez.

CScrollViewEmellett a Microsoft Foundation osztálykönyvtára kilenc további osztályt is biztosít a következőbőlCView:

  • CCtrlView, egy nézet, amely lehetővé teszi a dokumentum használatát – architektúra megtekintése fával, listával és részletes szerkesztési vezérlőkkel.

  • CDaoRecordView, egy nézet, amely az adatbázisrekordokat jeleníti meg a párbeszédpanel-vezérlőkben.

  • CEditViewnézet, amely egy egyszerű többsoros szövegszerkesztőt biztosít. Az objektumot vezérlőként használhatja CEditView egy párbeszédpanelen, valamint egy dokumentum nézetét.

  • CFormView, egy görgethető nézet, amely párbeszédpanel-vezérlőket tartalmaz, és egy párbeszédpanelsablon-erőforráson alapul.

  • CListView, egy nézet, amely lehetővé teszi a dokumentum használatát – az architektúra megtekintése listavezérlőkkel.

  • CRecordView, egy nézet, amely az adatbázisrekordokat jeleníti meg a párbeszédpanel-vezérlőkben.

  • CRichEditView, egy nézet, amely lehetővé teszi a dokumentum használatát – architektúra megtekintése részletes szerkesztési vezérlőkkel.

  • CScrollViewnézetben, amely automatikusan támogatja a görgetést.

  • CTreeView, egy nézet, amely lehetővé teszi a dokumentum használatát – architektúra megtekintése favezérlőkkel.

Az CView osztálynak van egy származtatott implementációs osztálya is CPreviewView, amelyet a keretrendszer használ a nyomtatási képkészítés végrehajtásához. Ez az osztály támogatja a nyomtatási kép ablakának egyedi funkcióit, például az eszköztárat, az egy- vagy kétoldalas előnézetet, valamint a nagyítást, vagyis az előnézeti kép nagyítását. Nem kell meghívnia vagy felülbírálnia CPreviewViewegyik tagfüggvényt sem, hacsak nem szeretné implementálni a saját felületét a nyomtatási képhez (például ha támogatni szeretné a nyomtatási kép módban történő szerkesztést). További információ a használatról CView: Document/View Architecture and Printing. A nyomtatási kép testreszabásával kapcsolatos további részletekért tekintse meg a Technical Note 30-at .

Öröklési hierarchia

CObject

CCmdTarget

CWnd

CView

Requirements

Fejléc:afxwin.h

CView::CView

Egy CView objektumot hoz létre.

CView();

Megjegyzések

A keretrendszer meghívja a konstruktort egy új keretablak létrehozásakor vagy egy ablak felosztásakor. Felülbírálja a OnInitialUpdate tagfüggvényt a nézet inicializálásához a dokumentum csatolása után.

CView::DoPreparePrinting

Hívja meg ezt a függvényt a felülbírálástól OnPreparePrinting , hogy meghívja a Nyomtatás párbeszédpanelt, és hozzon létre egy nyomtatóeszköz-környezetet.

BOOL DoPreparePrinting(CPrintInfo* pInfo);

Paraméterek

pInfo
Az aktuális nyomtatási feladatot leíró struktúrára CPrintInfo mutat.

Visszaadott érték

Nonzero, ha a nyomtatás vagy a nyomtatási kép elkezdhető; 0, ha a műveletet megszakították.

Megjegyzések

A függvény működése attól függ, hogy a függvény nyomtatásra vagy nyomtatási képre van-e meghívva (a m_bPreview paraméter tagja pInfo határozza meg). Ha egy fájl nyomtatása folyamatban van, a függvény meghívja a Nyomtatás párbeszédpanelt a rá mutató struktúra pInfo értékeinek CPrintInfo használatával. Miután a felhasználó bezárta a párbeszédpanelt, a függvény létrehoz egy nyomtatóeszköz-környezetet a párbeszédpanelen megadott beállítások alapján, és visszaadja ezt az eszközkörnyezetet a pInfo paraméteren keresztül. Ez az eszközkörnyezet a dokumentum nyomtatására szolgál.

Ha egy fájl előnézetét tekinti meg, ez a függvény létrehoz egy nyomtatóeszköz-környezetet az aktuális nyomtatóbeállítások használatával; ez az eszközkörnyezet a nyomtató előzetes verzióban történő szimulálására szolgál.

CView::GetDocument

A függvény meghívásával mutatót kaphat a nézet dokumentumához.

CDocument* GetDocument() const;

Visszaadott érték

A nézethez társított objektumra mutató mutató CDocument . NULL ha a nézet nincs dokumentumhoz csatolva.

Megjegyzések

Így meghívhatja a dokumentum tagfüggvényeit.

CView::IsSelected

A keretrendszer meghívta, hogy ellenőrizze, hogy a megadott dokumentumelem ki van-e jelölve.

virtual BOOL IsSelected(const CObject* pDocItem) const;

Paraméterek

pDocItem
A tesztelt dokumentumelemre mutat.

Visszaadott érték

Nemzero, ha a megadott dokumentumelem van kijelölve; egyéb esetben 0.

Megjegyzések

Ennek a függvénynek az alapértelmezett implementációja FALSEad vissza. Bírálja felül ezt a függvényt, ha objektumokkal CDocItem valósítja meg a kijelölést. Ezt a függvényt felül kell bírálnia, ha a nézet OLE-elemeket tartalmaz.

CView::OnActivateFrame

A keretrendszer meghívja a nézetet tartalmazó keretablak aktiválása vagy inaktiválása esetén.

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

Paraméterek

nState
Megadja, hogy a keretablak aktiválva vagy inaktiválva van-e. A következő értékek egyike lehet:

  • WA_INACTIVE A keretablak inaktiválva van.

  • WA_ACTIVE A keretablak aktiválása az egérkattintástól eltérő módszerrel történik (például a billentyűzet felületének használatával az ablak kiválasztásához).

  • WA_CLICKACTIVE A keretablak aktiválása egérkattintással történik

pFrameWnd
Mutasson az aktiválandó keretablakra.

Megjegyzések

Bírálja felül ezt a tagfüggvényt, ha speciális feldolgozást szeretne végezni a nézethez társított keretablak aktiválása vagy inaktiválása esetén. Ezt a felülbírálást például akkor hajtja végre, CFormView amikor menti és visszaállítja a fókuszt tartalmazó vezérlőt.

CView::OnActivateView

A keretrendszer meghívja a nézet aktiválása vagy inaktiválása esetén.

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

Paraméterek

bActivate
Azt jelzi, hogy a nézet aktiválva vagy inaktiválva van-e.

pActivateView
Az aktivált nézetobjektumra mutat.

pDeactiveView
Az inaktivált nézetobjektumra mutat.

Megjegyzések

A függvény alapértelmezett implementációja az aktivált nézetre helyezi a fókuszt. Felülbírálja ezt a függvényt, ha speciális feldolgozást szeretne végezni egy nézet aktiválása vagy inaktiválása esetén. Ha például olyan speciális vizuális jeleket szeretne megadni, amelyek megkülönböztetik az aktív nézetet az inaktív nézetektől, meg kell vizsgálnia a bActivate paramétert, és ennek megfelelően frissítenie kell a nézet megjelenését.

pDeactiveView A pActivateView paraméterek ugyanarra a nézetre mutatnak, ha az alkalmazás fő keretablaka aktív nézetben nem változik – például ha a fókusz átkerül egy másik alkalmazásból ebbe a nézetbe, nem pedig az alkalmazás egyik nézetéből a másikba, vagy az MDI gyermekablakai közötti váltáskor. Ez lehetővé teszi, hogy a nézet szükség esetén újra megvalósítsa a palettáját.

Ezek a paraméterek akkor különböznek, ha CFrameWnd::SetActiveView olyan nézettel vannak meghívva, amely eltér a visszaadott értéktől CFrameWnd::GetActiveView . Ez leggyakrabban osztott ablakokkal történik.

CView::OnBeginPrinting

A keretrendszer meghívta egy nyomtatási vagy nyomtatási előnézeti feladat elején, a meghívás után OnPreparePrinting .

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

Paraméterek

pDC
A nyomtatóeszköz környezetére mutat.

pInfo
Az aktuális nyomtatási feladatot leíró struktúrára CPrintInfo mutat.

Megjegyzések

A függvény alapértelmezett implementációja nem végez semmit. A függvény felülbírálása a kifejezetten nyomtatáshoz szükséges GDI-erőforrások, például tollak vagy betűtípusok lefoglalásához. Jelölje ki a GDI-objektumokat az eszközkörnyezetbe a tagfüggvényen belül az OnPrint őket használó lapokhoz. Ha ugyanazt a nézetobjektumot használja a képernyőmegjelenítéshez és a nyomtatáshoz is, használjon külön változókat az egyes megjelenítésekhez szükséges GDI-erőforrásokhoz; ez lehetővé teszi a képernyő frissítését nyomtatás közben.

Ezzel a függvénnyel inicializálásokat is végrehajthat, amelyek a nyomtatóeszköz-környezet tulajdonságaitól függenek. A dokumentum nyomtatásához szükséges oldalak száma például a Felhasználó által a Nyomtatás párbeszédpanelen megadott beállításoktól (például az oldalhossztól) függhet. Ilyen esetben nem adhatja meg a dokumentum hosszát a OnPreparePrinting tagfüggvényben, ahol ezt általában tenné; meg kell várnia, amíg a párbeszédpanel beállításai alapján létre nem jön a nyomtatóeszköz környezete. OnBeginPrinting az első felülírható függvény, amely hozzáférést biztosít a CDC nyomtatóeszköz környezetét képviselő objektumhoz, így a dokumentum hosszát ebből a függvényből állíthatja be. Vegye figyelembe, hogy ha a dokumentum hossza jelenleg nincs megadva, a nyomtatási kép alatt nem jelenik meg görgetősáv.

CView::OnDragEnter

A keretrendszer hívja meg, amikor az egér először belép a célablak nem görgethető területére.

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

Paraméterek

pDataObject
COleDataObject A nézet legördülő területére húzásra mutat.

dwKeyState
A módosító kulcsok állapotát tartalmazza. Ez a következők tetszőleges számának kombinációja: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTONés MK_RBUTTON.

point
Az egér aktuális pozíciója a nézet ügyfélterületéhez képest.

Visszaadott érték

Az enumerált típusból származó DROPEFFECT érték, amely azt jelzi, hogy milyen típusú esés következne be, ha a felhasználó erre a pozícióra dobná az objektumot. Az elvetés típusa általában az aktuális kulcsállapottól dwKeyStatefügg. A kulcsállapotok értékekhez való DROPEFFECT szabványos leképezése a következő:

  • DROPEFFECT_NONE Az adatobjektum nem hajtható végre ebben az ablakban.

  • DROPEFFECT_LINK az MK_CONTROL|MK_SHIFT objektum és a kiszolgáló közötti kapcsolat létrehozása.

  • DROPEFFECT_COPY az MK_CONTROL elvetett objektum másolatának létrehozása.

  • DROPEFFECT_MOVE az MK_ALT elvetett objektum másolatának létrehozása és az eredeti objektum törlése. Ez általában az alapértelmezett legördülő effektus, amikor a nézet elfogadja ezt az adatobjektumot.

További információ: MFC Advanced Concepts minta OCLIENT.

Megjegyzések

Az alapértelmezett implementáció nem tesz semmit, és nem ad vissza DROPEFFECT_NONE.

A függvény felülbírálása a tagfüggvény jövőbeli hívásainak előkészítéséhez OnDragOver . Az adatobjektumból szükséges adatokat le kell kérni a tagfüggvény későbbi használatához OnDragOver . A nézetet jelenleg is frissíteni kell, hogy a felhasználó vizuális visszajelzést kapjon. További információkért tekintse meg az OLE húzással és húzással: Drop Target implementálása című cikket.

CView::OnDragLeave

A keretrendszer egy húzási művelet során hívja meg, amikor az egér ki van helyezve az adott ablak érvényes legördülő területéről.

virtual void OnDragLeave();

Megjegyzések

Bírálja felül ezt a függvényt, ha az aktuális nézetnek törölnie kell a hívások során OnDragEnterOnDragOver végrehajtott műveleteket, például eltávolíthatja a vizuális felhasználói visszajelzéseket az objektum húzása és elvetése során.

CView::OnDragOver

A keretrendszer meghívta egy húzási művelet során, amikor az egér átkerül a célablakon.

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

Paraméterek

pDataObject
Rámutat a COleDataObject cél cél fölé húzva.

dwKeyState
A módosító kulcsok állapotát tartalmazza. Ez a következők tetszőleges számának kombinációja: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTONés MK_RBUTTON.

point
Az egér aktuális pozíciója a nézet ügyfélterületéhez képest.

Visszaadott érték

Az enumerált típusból származó DROPEFFECT érték, amely azt jelzi, hogy milyen típusú esés következne be, ha a felhasználó erre a pozícióra dobná az objektumot. Az elvetés típusa gyakran az aktuális kulcsállapottól függ, ahogy azt a dwKeyStaterendszer jelzi. A kulcsállapotok értékekhez való DROPEFFECT szabványos leképezése a következő:

  • DROPEFFECT_NONE Az adatobjektum nem hajtható végre ebben az ablakban.

  • DROPEFFECT_LINK az MK_CONTROL|MK_SHIFT objektum és a kiszolgáló közötti kapcsolat létrehozása.

  • DROPEFFECT_COPY az MK_CONTROL elvetett objektum másolatának létrehozása.

  • DROPEFFECT_MOVE az MK_ALT elvetett objektum másolatának létrehozása és az eredeti objektum törlése. Ez általában az alapértelmezett legördülő effektus, amikor a nézet el tudja fogadni az adatobjektumot.

További információ: MFC Advanced Concepts minta OCLIENT.

Megjegyzések

Az alapértelmezett implementáció az, hogy semmit nem tesz, és visszaadja DROPEFFECT_NONE.

Bírálja felül ezt a függvényt, hogy visszajelzést adjon a felhasználói vizualizációnak a húzási művelet során. Mivel ezt a függvényt folyamatosan hívjuk, a benne található kódokat a lehető legnagyobb mértékben optimalizálni kell. További információkért tekintse meg az OLE húzással és húzással: Drop Target implementálása című cikket.

CView::OnDragScroll

Hívás előtt OnDragEnter hívja meg a keretrendszer, vagy OnDragOver állapítsa meg, hogy a pont a görgetési régióban van-e.

virtual DROPEFFECT OnDragScroll(
    DWORD dwKeyState,
    CPoint point);

Paraméterek

dwKeyState
A módosító kulcsok állapotát tartalmazza. Ez a következők tetszőleges számának kombinációja: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTONés MK_RBUTTON.

point
A kurzor helye képpontban, a képernyőhöz viszonyítva.

Visszaadott érték

Az enumerált típusból származó DROPEFFECT érték, amely azt jelzi, hogy milyen típusú esés következne be, ha a felhasználó erre a pozícióra dobná az objektumot. Az elvetés típusa általában az aktuális kulcsállapottól dwKeyStatefügg. A kulcsállapotok értékekhez való DROPEFFECT szabványos leképezése a következő:

  • DROPEFFECT_NONE Az adatobjektum nem hajtható végre ebben az ablakban.

  • DROPEFFECT_LINK az MK_CONTROL|MK_SHIFT objektum és a kiszolgáló közötti kapcsolat létrehozása.

  • DROPEFFECT_COPY az MK_CONTROL elvetett objektum másolatának létrehozása.

  • DROPEFFECT_MOVE az MK_ALT elvetett objektum másolatának létrehozása és az eredeti objektum törlése.

  • DROPEFFECT_SCROLL Azt jelzi, hogy egy húzási görgetési művelet készül vagy a célnézetben történik.

További információ: MFC Advanced Concepts minta OCLIENT.

Megjegyzések

Bírálja felül ezt a függvényt, ha különleges viselkedést szeretne biztosítani ehhez az eseményhez. Az alapértelmezett implementáció automatikusan görgeti az ablakokat, amikor a kurzort az egyes ablakok szegélyén belüli alapértelmezett görgetési régióba húzza. További információkért tekintse meg az OLE húzással és húzással: Drop Target implementálása című cikket.

CView::OnDraw

A keretrendszer meghívta, hogy megjelenítse a dokumentum képét.

virtual void OnDraw(CDC* pDC) = 0;

Paraméterek

pDC
A dokumentum képének megjelenítéséhez használandó eszközkörnyezetre mutat.

Megjegyzések

A keretrendszer ezt a függvényt képernyőmegjelenítésre, nyomtatásra és nyomtatási képre hívja meg, és minden esetben más-más eszközkörnyezetet ad át. Nincs alapértelmezett implementáció.

A dokumentum nézetének megjelenítéséhez felül kell bírálnia ezt a függvényt. Grafikus eszközillesztő (GDI) hívásokat kezdeményezhet a CDC paraméter által pDC mutatott objektummal. A rajz előtt kijelölheti a GDI-erőforrásokat( például tollakat vagy betűtípusokat) az eszközkörnyezetbe, majd megszüntetheti a kijelölésüket. A rajzkód gyakran eszközfüggetlen lehet; vagyis nem igényel információt arról, hogy milyen típusú eszköz jeleníti meg a képet.

A rajz optimalizálásához hívja meg az RectVisible eszközkörnyezet tagfüggvényét, hogy megtudja, meg lesz-e rajzolva egy adott téglalap. Ha meg kell különböztetnie a normál képernyőkijelenítést és a nyomtatást, hívja meg az IsPrinting eszközkörnyezet tagfüggvényét.

CView::OnDrop

A keretrendszer meghívja, amikor a felhasználó egy adatobjektumot egy érvényes dobási célon keresztül ad ki.

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

Paraméterek

pDataObject
COleDataObject A célba elvetett pontra mutat.

dropEffect
A felhasználó által kért drop effect.

  • DROPEFFECT_COPY Másolatot készít az elvetett adatobjektumról.

  • DROPEFFECT_MOVE Az adatobjektum áthelyezése az egér aktuális helyére.

  • DROPEFFECT_LINK Kapcsolatot hoz létre egy adatobjektum és annak kiszolgálója között.

point
Az egér aktuális pozíciója a nézet ügyfélterületéhez képest.

Visszaadott érték

Nonzero, ha az esés sikeres volt; egyéb esetben 0.

Megjegyzések

Az alapértelmezett implementáció nem végez semmit, és visszaadja azt FALSE.

Felülbírálja ezt a függvényt, hogy megvalósítsa egy OLE-csepp hatását a nézet ügyfélterületére. Az adatobjektum a vágólap adatformátumainak és a megadott ponton elvetett adatoknak a vizsgálatával pDataObject vizsgálható meg.

Megjegyzés:

A keretrendszer nem hívja meg ezt a függvényt, ha felülbírálás OnDropEx történik ebben a nézetosztályban.

CView::OnDropEx

A keretrendszer meghívja, amikor a felhasználó egy adatobjektumot egy érvényes dobási célon keresztül ad ki.

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

Paraméterek

pDataObject
COleDataObject A célba elvetett pontra mutat.

dropDefault
Az a hatás, amelyet a felhasználó az alapértelmezett csepegtetési művelethez választott az aktuális kulcsállapot alapján. Lehet , hogy DROPEFFECT_NONE. A cseppeffektusokat a Megjegyzések szakaszban tárgyaljuk.

dropList
A drop source által támogatott legördülő effektusok listája. A drop effect értékek a bitenkénti OR ( |) művelettel kombinálhatók. A cseppeffektusokat a Megjegyzések szakaszban tárgyaljuk.

point
Az egér aktuális pozíciója a nézet ügyfélterületéhez képest.

Visszaadott érték

A legördülő effektus, amely a megadott helyen pointtörtént dobási kísérlet eredményeként jött létre. Ennek az értéknek az egyiknek kell lennie, amelyet dropEffectLista rendszer jelez. A cseppeffektusokat a Megjegyzések szakaszban tárgyaljuk.

Megjegyzések

Az alapértelmezett implementáció az, hogy semmit nem tesz, és egy hamis értéket (-1) ad vissza, amely jelzi, hogy a keretrendszernek meg kell hívnia a kezelőt OnDrop .

Felülbírálja ezt a függvényt a jobb egérgomb húzásának megvalósításához. A jobb egérgomb húzása általában a jobb egérgomb felengedésekor megjelenő választási lehetőségek menüjét jeleníti meg.

A jobb egérgombhoz tartozó lekérdezés felülbírálása OnDropEx . A kezelőből meghívhatja GetKeyState vagy tárolhatja a jobb egérgombos állapotot OnDragEnter .

  • Ha a jobb egérgomb le van gördülve, a felülbírálásnak egy előugró menüt kell megjelenítenie, amely támogatja a legördülő effektusokat a legördülő forrás számára.

    • Vizsgálja meg dropList a drop source által támogatott cseppeffektusokat. Csak ezeket a műveleteket engedélyezze az előugró menüben.

    • Az SetMenuDefaultItem alapértelmezett művelet beállítása a következő alapján dropDefault: .

    • Végül hajtsa végre a felhasználó által az előugró menüben megadott műveletet.

  • Ha a jobb egérgomb nem áll le, a felülbírálásnak szabványos legördülő kérelemként kell feldolgoznia. Használja a megadott legördülő effektust dropDefault. Másik lehetőségként a felülbírálás visszaadhatja a próbabábu értékét (-1), hogy jelezze, hogy OnDrop ez fogja kezelni ezt az elvetési műveletet.

A vágólap adatformátumának és a COleDataObject megadott ponton elvetett adatoknak a vizsgálatára használhatópDataObject.

Az effektusok a drop művelethez társított műveletet írják le. Tekintse meg a legördülő effektusok alábbi listáját:

  • DROPEFFECT_NONE A dobás nem engedélyezett.

  • DROPEFFECT_COPY A rendszer másolási műveletet hajt végre.

  • DROPEFFECT_MOVE Áthelyezési művelet lenne végrehajtva.

  • DROPEFFECT_LINK Létrejön egy hivatkozás az elvetett adatokról az eredeti adatokra.

  • DROPEFFECT_SCROLL Azt jelzi, hogy egy húzási görgetési művelet készül vagy a célban történik.

Az alapértelmezett menüparancs beállításáról további információt a Windows SDK-ban és CMenu::GetSafeHmenu ebben a kötetben találSetMenuDefaultItem.

CView::OnEndPrinting

A keretrendszer meghívta a dokumentum kinyomtatása vagy előnézete után.

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

Paraméterek

pDC
A nyomtatóeszköz környezetére mutat.

pInfo
Az aktuális nyomtatási feladatot leíró struktúrára CPrintInfo mutat.

Megjegyzések

A függvény alapértelmezett implementációja nem végez semmit. A függvény felülbírálása a tagfüggvényben OnBeginPrinting lefoglalt GDI-erőforrások felszabadításához.

CView::OnEndPrintPreview

A keretrendszer meghívja, amikor a felhasználó kilép a nyomtatási kép módból.

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

Paraméterek

pDC
A nyomtatóeszköz környezetére mutat.

pInfo
Az aktuális nyomtatási feladatot leíró struktúrára CPrintInfo mutat.

point
Megadja a lapon azt a pontot, amely utoljára előnézeti módban volt megjelenítve.

pView
A megtekintéshez használt nézetobjektumra mutat.

Megjegyzések

A függvény alapértelmezett implementációja meghívja a OnEndPrinting tagfüggvényt, és visszaállítja a fő keretablakot arra az állapotra, amelyben a nyomtatási kép megkezdése előtt volt. Felülbírálja ezt a függvényt, hogy speciális feldolgozást végezzen az előnézeti mód leállítása esetén. Ha például az előnézeti módról a normál megjelenítési módra való váltáskor meg szeretné tartani a felhasználó pozícióját a dokumentumban, görgessen a paraméter és point a m_nCurPage struktúra azon tagjára CPrintInfo , amelyre a pInfo paraméter mutat.

Mindig hívja meg a felülbírálás alaposztály-verzióját OnEndPrintPreview , általában a függvény végén.

CView::OnInitialUpdate

A keretrendszer meghívta, miután a nézetet először csatolták a dokumentumhoz, de a nézet kezdeti megjelenítése előtt.

virtual void OnInitialUpdate();

Megjegyzések

A függvény alapértelmezett implementációja a tagfüggvényt tippinformációk nélkül hívja meg OnUpdate (azaz a paraméterhez és NULL a lHint paraméterhez a 0 alapértelmezett értékeit pHint használja). A függvény felülbírálása minden olyan egyszeri inicializálás végrehajtásához, amely a dokumentumra vonatkozó információkat igényel. Ha például az alkalmazás rögzített méretű dokumentumokkal rendelkezik, ezzel a függvénnyel inicializálhatja a nézet görgetési korlátait a dokumentumméret alapján. Ha az alkalmazás támogatja a változó méretű dokumentumokat, OnUpdate a dokumentum minden módosításakor frissítse a görgetési korlátokat.

CView::OnPrepareDC

A keretrendszer meghívta, mielőtt a OnDraw tagfüggvényt képernyőmegjelenítésre hívták meg, és mielőtt a OnPrint tagfüggvényt minden laphoz meghívták a nyomtatás vagy a nyomtatás előnézete során.

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

Paraméterek

pDC
A dokumentum képének megjelenítéséhez használandó eszközkörnyezetre mutat.

pInfo
Egy olyan struktúrára CPrintInfo mutat, amely leírja az aktuális nyomtatási feladatot, ha OnPrepareDC nyomtatásra vagy nyomtatási képre van szükség; a m_nCurPage tag megadja a nyomtatni kívánt oldalt. Ez a paraméter akkor jelenik NULL meg, ha OnPrepareDC képernyőmegjelenítésre van szükség.

Megjegyzések

A függvény alapértelmezett implementációja nem tesz semmit, ha a függvény képernyőmegjelenítésre van meghívva. Ez a függvény azonban felülbírálva van a származtatott osztályokban, például CScrollViewaz eszközkörnyezet attribútumainak módosításához; ezért mindig hívja meg az alaposztály implementációját a felülbírálás elején.

Ha a függvény nyomtatásra van meghívva, az alapértelmezett implementáció megvizsgálja a paraméterben pInfo tárolt lapadatokat. Ha a dokumentum hossza nincs megadva, feltételezi, OnPrepareDC hogy a dokumentum egy oldal hosszú, és leállítja a nyomtatási ciklust egy oldal nyomtatása után. A függvény leállítja a nyomtatási ciklust a m_bContinuePrinting struktúra FALSEtagjának beállításával.

Felülbírálás OnPrepareDC az alábbi okok bármelyike miatt:

  • Az eszközkörnyezet attribútumainak módosítása a megadott laphoz szükséges módon. Ha például be kell állítania a leképezési módot vagy az eszközkörnyezet egyéb jellemzőit, tegye ezt ebben a függvényben.

  • Nyomtatási idő tördelésének végrehajtása. A nyomtatás megkezdésekor általában a tagfüggvény használatával adja meg a dokumentum hosszát OnPreparePrinting . Ha azonban nem tudja előre, hogy mennyi ideig tart a dokumentum (például ha meghatározatlan számú rekordot nyomtat ki egy adatbázisból), felülbírálhatja OnPrepareDC a dokumentum végét a nyomtatás során. Ha nincs több nyomtatandó dokumentum, állítsa a m_bContinuePrinting struktúra tagját a CPrintInfo következőre FALSE: .

  • Menekülési kódok küldése a nyomtatónak lapról oldalra. A feloldókódok OnPrepareDCelküldéséhez hívja meg a Escape paraméter tagfüggvényét pDC .

A felülbírálás elején hívja meg az alaposztály verzióját OnPrepareDC .

Example

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

A keretrendszer meghívta a dokumentum nyomtatása vagy előnézete előtt.

virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);

Paraméterek

pInfo
Az aktuális nyomtatási feladatot leíró struktúrára CPrintInfo mutat.

Visszaadott érték

Nonzero a nyomtatás megkezdéséhez; 0, ha a nyomtatási feladat megszakadt.

Megjegyzések

Az alapértelmezett implementáció nem végez semmit.

A nyomtatás és a nyomtatás előnézetének engedélyezéséhez felül kell bírálnia ezt a függvényt. Hívja meg a DoPreparePrinting tagfüggvényt, adja át a pInfo paramétert, majd adja vissza a visszatérési értékét; DoPreparePrinting megjeleníti a Nyomtatás párbeszédpanelt, és létrehoz egy nyomtatóeszköz-környezetet. Ha a Nyomtatás párbeszédpanelt az alapértelmezett értékeken kívül más értékekkel szeretné inicializálni, rendeljen értékeket a program tagjaihoz pInfo. Ha például ismeri a dokumentum hosszát, a hívás DoPreparePrintingelőtt adja át az értéket a SetMaxPage tagfüggvényénekpInfo. Ez az érték a Nyomtatás párbeszédpanel Tartomány részén, a To: (Cél) mezőben jelenik meg.

DoPreparePrinting nem jelenik meg az előnézeti feladat Nyomtatás párbeszédpanelje. Ha meg szeretné kerülni egy nyomtatási feladat Nyomtatás párbeszédpanelétpInfo, ellenőrizze, hogy a m_bPreview program tagja-eFALSE, majd állítsa be TRUE a kívánt értékre, mielőtt át szeretné adniDoPreparePrinting; állítsa vissza FALSE későbbre.

Ha olyan inicializálásokat kell végrehajtania, amelyek hozzáférést igényelnek a CDC nyomtatóeszköz környezetét képviselő objektumhoz (például ha a dokumentum hosszának megadása előtt ismernie kell az oldalméretet), felül kell bírálnia a OnBeginPrinting tagfüggvényt.

Ha meg szeretné adni a paraméter értékét m_nNumPreviewPages vagy tagjaitpInfo, ezt a hívás DoPreparePrintingm_strPageDesc után végezze el. A DoPreparePrinting tagfüggvény az alkalmazásban található értékre van adva m_nNumPreviewPages . INI-fájl, és az alapértelmezett értékre van adva m_strPageDesc .

Example

Felülbírálás OnPreparePrinting és hívás DoPreparePrinting a felülbírálástól, hogy a keretrendszer megjelenítsen egy Nyomtatás párbeszédpanelt, és hozzon létre önnek egy nyomtató-tartományvezérlőt.

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

Ha tudja, hogy a dokumentum hány oldalt tartalmaz, hívás előtt DoPreparePrintingállítsa be OnPreparePrinting a maximális lapot. A keretrendszer a Nyomtatás párbeszédpanel "To" mezőjében jeleníti meg a maximális oldalszámot.

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

CView::OnPrint

A keretrendszer meghívta a dokumentum egy oldalának nyomtatására vagy előnézetére.

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

Paraméterek

pDC
A nyomtatóeszköz környezetére mutat.

pInfo
Az aktuális nyomtatási feladatot leíró struktúrára CPrintInfo mutat.

Megjegyzések

Minden nyomtatandó lap esetében a keretrendszer a tagfüggvény meghívása után azonnal meghívja ezt a függvényt OnPrepareDC . A nyomtatandó lapot a m_nCurPage rá mutató struktúra pInfo tagja CPrintInfo adja meg. Az alapértelmezett implementáció meghívja a OnDraw tagfüggvényt, és átadja a nyomtatóeszköz környezetét.

A függvény felülbírálása az alábbi okok bármelyike miatt:

  • Többoldalas dokumentumok nyomtatásának engedélyezése. Csak a dokumentum azon részét renderelje, amely megfelel a jelenleg kinyomtatott lapnak. Ha a renderelést használja OnDraw , módosíthatja a nézet eredetét, hogy csak a dokumentum megfelelő része legyen kinyomtatva.

  • Ha azt szeretné, hogy a nyomtatott kép eltérjen a képernyő képétől (vagyis ha az alkalmazás nem WYSIWYG). A nyomtatóeszköz környezetének OnDrawátadása helyett az eszközkörnyezet használatával jelenítsen meg egy képet a képernyőn nem látható attribútumokkal.

    Ha olyan GDI-erőforrásokra van szüksége a nyomtatáshoz, amelyeket nem használ képernyőmegjelenítéshez, jelölje ki őket az eszközkörnyezetbe a rajzolás előtt, majd törölje a jelölésüket. Ezeket a GDI-erőforrásokat ki kell osztani OnBeginPrinting és ki kell szabadítani.OnEndPrinting

  • Élőfejek vagy élőlábak implementálása. Továbbra is használhatja OnDraw a renderelést a nyomtatható terület korlátozásával.

Vegye figyelembe, hogy a m_rectDrawpInfo paraméter tagja logikai egységekben írja le a lap nyomtatható területét.

Ne hívja OnPrepareDC meg a felülbírálástOnPrint; a keretrendszer hívása előtt OnPrintautomatikusan hívOnPrepareDC.

Example

A következő egy felülrendelt függvény csontváza OnPrint :

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

Egy másik példa: CRichEditView::PrintInsideRect.

CView::OnScroll

A keretrendszer meghívta, hogy megállapítsa, lehetséges-e görgetés.

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

Paraméterek

nScrollCode
A felhasználó görgetési kérését jelző görgetősáv-kód. Ez a paraméter két részből áll: egy alacsony sorrendű bájtból, amely meghatározza a vízszintesen előforduló görgetés típusát, valamint egy nagy sorrendű bájtot, amely meghatározza a függőlegesen történő görgetés típusát:

  • SB_BOTTOM Görgessen lefelé.

  • SB_LINEDOWN Görgetés egy sorral lejjebb.

  • SB_LINEUP Görgetés egy sorban felfelé.

  • SB_PAGEDOWN Görgetés egy oldallal lejjebb.

  • SB_PAGEUP Egy oldal felfelé görgetése.

  • SB_THUMBTRACK Húzza a görgetődobozt a megadott helyre. Az aktuális pozíció a következőben nPosvan megadva: .

  • SB_TOP Görgessen felfelé.

nPos
A görgetősáv aktuális pozícióját tartalmazza, ha a görgetősáv kódja ; SB_THUMBTRACKellenkező esetben nincs használatban. A kezdeti görgetési tartománytól függően negatív lehet, nPos és szükség esetén át kell helyezni.int

bDoScroll
Meghatározza, hogy valóban a megadott görgetési műveletet kell-e végrehajtania. Ha TRUE, akkor görgetésnek kell történnie; ha FALSE, akkor a görgetésnek nem szabad történnie.

Visszaadott érték

Ha bDoScroll igen, TRUE és a nézet valójában görgetve lett, akkor a nonzero értéket adja vissza, egyébként 0. Ha bDoScroll igen FALSE, akkor adja vissza azt az értéket, amelyet akkor is visszaadott volna, ha bDoScroll az lenne TRUE, annak ellenére, hogy valójában nem görgeti a műveletet.

Megjegyzések

Egy esetben a keretrendszer bDoScroll meghívja ezt a függvényt, és azt állítja be, hogy TRUE a nézet mikor kap egy görgetősáv-üzenetet. Ebben az esetben valójában görgetnie kell a nézetet. A másik esetben ezt a függvényt úgy hívjuk meg bDoScroll , hogy FALSE amikor egy OLE-elemet először húznak egy legördülő cél automatikus görgetési területére, mielőtt a görgetés ténylegesen végbemegy. Ebben az esetben nem szabad görgetni a nézetet.

CView::OnScrollBy

A keretrendszer meghívja, amikor a felhasználó a dokumentum jelenlegi nézetén túli területet tekint meg, vagy egy OLE-elemet húz a nézet aktuális szegélyeihez, vagy a függőleges vagy vízszintes görgetősávok módosításával.

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

Paraméterek

sizeScroll
Vízszintesen és függőlegesen görgetett képpontok száma.

bDoScroll
Meghatározza, hogy a nézet görgetése megtörténik-e. Ha TRUE, akkor a görgetés történik; ha FALSE, akkor a görgetés nem történik meg.

Visszaadott érték

Nonzero, ha a nézet görgethető volt; egyéb esetben 0.

Megjegyzések

Származtatott osztályokban ez a módszer ellenőrzi, hogy a nézet görgethető-e a felhasználó által kért irányban, majd szükség esetén frissíti az új régiót. Ezt a függvényt a rendszer automatikusan meghívja CWnd::OnHScroll és CWnd::OnVScroll végrehajtja a tényleges görgetési kérést.

A metódus alapértelmezett implementációja nem módosítja a nézetet, de ha nincs meghívva, a nézet nem görgethető egy CScrollView-származtatott osztályban.

Ha a dokumentum szélessége vagy magassága meghaladja a 32767 képpontot, az elmúlt 32767 görgetés sikertelen lesz, mert OnScrollBy érvénytelen sizeScroll argumentummal van meghívva.

CView::OnUpdate

A keretrendszer meghívta a nézet dokumentumának módosítása után; ezt a függvényt a rendszer meghívja CDocument::UpdateAllViews , és lehetővé teszi a nézet számára a megjelenítés frissítését, hogy azok tükrözzék ezeket a módosításokat.

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

Paraméterek

pSender
A dokumentumot módosító nézetre mutat, vagy NULL ha minden nézetet frissíteni szeretne.

lHint
Információkat tartalmaz a módosításokról.

pHint
Rámutat egy objektumra, amely a módosításokkal kapcsolatos információkat tárolja.

Megjegyzések

Ezt a parancsot az alapértelmezett implementáció is meghívja OnInitialUpdate. Az alapértelmezett implementáció érvényteleníti a teljes ügyfélterületet, és festésre jelöli meg a következő WM_PAINT üzenet érkezésekor. Bírálja felül ezt a függvényt, ha csak azokat a régiókat szeretné frissíteni, amelyek a dokumentum módosított részeire vannak megfeleltetve. Ehhez meg kell adnia a módosításokkal kapcsolatos információkat a tippparaméterek használatával.

A használathoz lHintadjon meg speciális tippértékeket, jellemzően bitmaszkot vagy számbavételi típust, és adja meg, hogy a dokumentum átadja az értékek egyikét. A használathoz pHintszármaztasson egy tipposztályt CObject , és adja át a dokumentumnak egy mutatót egy emlékeztetőobjektumnak; felül kell vizsgálnia OnUpdatea CObject::IsKindOf tagfüggvényt a tippobjektum futásidejű típusának meghatározásához.

Általában nem szabad közvetlenül a rajzot elvégezni.OnUpdate Ehelyett határozza meg az eszközkoordinátákban a frissítést igénylő területet leíró téglalapot; adja át ezt a téglalapot a parancsnak CWnd::InvalidateRect. Ez azt eredményezi, hogy a festés a következő üzenet érkezésekor WM_PAINT következik be.

Ha lHint 0 és pHint van NULL, a dokumentum általános frissítési értesítést küldött. Ha egy nézet általános frissítési értesítést kap, vagy ha nem tudja dekódolni a tippeket, érvénytelenítenie kell a teljes ügyfélterületét.

Lásd még

MFC-minta MDIDOCVW
CWnd osztály
hierarchiadiagram
CWnd osztály
CFrameWnd osztály
CSplitterWnd osztály
CDC osztály
CDocTemplate osztály
CDocument osztály