Sdílet prostřednictvím


CDocument Třída

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

Syntaxe

class CDocument : public CCmdTarget

Členové

Veřejné konstruktory

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

Veřejné metody

Název Popis
CDocument::AddView Připojí zobrazení k dokumentu.
CDocument::BeginReadChunks Inicializuje čtení bloků dat.
CDocument::CanCloseFrame Upřesňující přepisovatelná; volána před zavřením okna rámečku pro zobrazení tohoto dokumentu.
CDocument::ClearChunkList Vymaže seznam bloků dat.
CDocument::ClearPathName Vymaže cestu k objektu dokumentu.
CDocument::DeleteContents Volá se k vyčištění dokumentu.
CDocument::FindChunk Vyhledá blok dat se zadaným identifikátorem GUID.
CDocument::GetAdapter Vrátí ukazatel na objekt, který implementuje IDocument rozhraní.
CDocument::GetDocTemplate Vrátí ukazatel na šablonu dokumentu, která popisuje typ dokumentu.
CDocument::GetFile Vrátí ukazatel na požadovaný CFile objekt.
CDocument::GetFirstViewPosition Vrátí pozici první v seznamu zobrazení; slouží k zahájení iterace.
CDocument::GetNextView Prochází seznam zobrazení přidružených k dokumentu.
CDocument::GetPathName Vrátí cestu k datovému souboru dokumentu.
CDocument::GetThumbnail Volá se k vytvoření rastrového obrázku, který bude používat zprostředkovatel miniatur k zobrazení miniatury.
CDocument::GetTitle Vrátí název dokumentu.
CDocument::InitializeSearchContent Volá se k inicializaci obsahu vyhledávání pro obslužnou rutinu vyhledávání.
CDocument::IsModified Určuje, jestli byl dokument od posledního uložení změněn.
CDocument::IsSearchAndOrganizeHandler Určuje, zda byla tato instance objektu vytvořena pro obslužnou rutinu CDocument vyhledávání a uspořádání.
CDocument::LoadDocumentFromStream Volána pro načtení dat dokumentu ze streamu.
CDocument::OnBeforeRichPreviewFontChanged Volá se před změnou písma Rich Preview.
CDocument::OnChangedViewList Volá se po přidání nebo odebrání zobrazení z dokumentu.
CDocument::OnCloseDocument Zavolá se k zavření dokumentu.
CDocument::OnCreatePreviewFrame Volal ho architektura, když potřebuje vytvořit rámec náhledu pro Rich Preview.
CDocument::OnDocumentEvent Volá se rozhraním v reakci na událost dokumentu.
CDocument::OnDrawThumbnail Přepsat tuto metodu v odvozené třídě nakreslit obsah miniatury.
CDocument::OnLoadDocumentFromStream Volá se rozhraním, když potřebuje načíst data dokumentu ze streamu.
CDocument::OnNewDocument Volá se k vytvoření nového dokumentu.
CDocument::OnOpenDocument Volá se k otevření existujícího dokumentu.
CDocument::OnPreviewHandlerQueryFocus Nasměruje obslužnou rutinu náhledu tak, aby vrátila HWND volání GetFocus funkce.
CDocument::OnPreviewHandlerTranslateAccelerator Nasměruje obslužnou rutinu náhledu tak, aby zpracovávala stisknutí kláves předané z pumpy zprávy procesu, ve kterém je spuštěná obslužná rutina náhledu.
CDocument::OnRichPreviewBackColorChanged Volá se při změně barvy pozadí s formátem RTF.
CDocument::OnRichPreviewFontChanged Volá se, když se změnilo písmo s formátováním náhledu.
CDocument::OnRichPreviewSiteChanged Volá se při změně webu s formátem Rich Preview.
CDocument::OnRichPreviewTextColorChanged Volá se při změně barvy textu ve formátu RTF.
CDocument::OnSaveDocument Volá se k uložení dokumentu na disk.
CDocument::OnUnloadHandler Volá se rozhraním při uvolnění obslužné rutiny náhledu.
CDocument::PreCloseFrame Volá se před zavřeným oknem rámečku.
CDocument::ReadNextChunkValue Přečte další hodnotu bloku dat.
CDocument::ReleaseFile Uvolní soubor, který ho zpřístupní pro použití jinými aplikacemi.
CDocument::RemoveChunk Odebere blok dat se zadaným GUIDtextem .
CDocument::RemoveView Odpojte zobrazení z dokumentu.
CDocument::ReportSaveLoadException Upřesňující přepisovatelná; volána při operaci otevření nebo uložení nelze dokončit kvůli výjimce.
CDocument::SaveModified Upřesňující přepisovatelná; vyzývá uživatele, zda má být dokument uložen.
CDocument::SetChunkValue Nastaví hodnotu bloku dat.
CDocument::SetModifiedFlag Nastaví příznak označující, že jste dokument od posledního uložení změnili.
CDocument::SetPathName Nastaví cestu k datovému souboru používanému dokumentem.
CDocument::SetTitle Nastaví název dokumentu.
CDocument::UpdateAllViews Upozorní všechna zobrazení, která dokument změnila.

Chráněné metody

Název Popis
CDocument::OnFileSendMail Odešle e-mailovou zprávu s připojeným dokumentem.
CDocument::OnUpdateFileSendMail Povolí příkaz Odeslat poštu, pokud je k dispozici podpora pošty.

Veřejné datové členy

Název Popis
CDocument::m_bGetThumbnailMode Určuje, že CDocument objekt byl vytvořen knihovnou dllhost pro miniatury. Měla by být vrácena CView::OnDrawse změnami .
CDocument::m_bPreviewHandlerMode Určuje, že CDocument objekt byl vytvořen prevhost pro Rich Preview. Měla by být vrácena CView::OnDrawse změnami .
CDocument::m_bSearchMode Určuje, že CDocument objekt byl vytvořen indexerem nebo jinou vyhledávací aplikací.
CDocument::m_clrRichPreviewBackColor Určuje barvu pozadí okna s formátem náhledu. Tato barva je nastavena hostitelem.
CDocument::m_clrRichPreviewTextColor Určuje barvu popředí okna s formátem náhledu. Tato barva je nastavena hostitelem.
CDocument::m_lfRichPreviewFont Určuje písmo textu pro okno náhledu ve formátu RTF. Tyto informace o písmu jsou nastaveny hostitelem.

Poznámky

Dokument představuje jednotku dat, kterou uživatel obvykle otevře pomocí příkazu Otevřít soubor a uloží pomocí příkazu Uložit soubor.

CDocument podporuje standardní operace, jako je vytvoření dokumentu, jeho načtení a uložení. Architektura manipuluje s dokumenty pomocí rozhraní definovaného rozhraním CDocument.

Aplikace může podporovat více než jeden typ dokumentu; Aplikace může například podporovat tabulky i textové dokumenty. Každý typ dokumentu má přidruženou šablonu dokumentu; Šablona dokumentu určuje, jaké prostředky (například nabídka, ikona nebo tabulka akcelerátorů) se pro daný typ dokumentu používají. Každý dokument obsahuje ukazatel na přidružený CDocTemplate objekt.

Uživatelé komunikují s dokumentem prostřednictvím CView objektů přidružených k němu. Zobrazení vykreslí obrázek dokumentu v okně rámečku a interpretuje vstup uživatele jako operace v dokumentu. Dokument může mít přidruženo více zobrazení. Když uživatel otevře okno v dokumentu, vytvoří rozhraní zobrazení a připojí ho k dokumentu. Šablona dokumentu určuje, jaký typ okna zobrazení a rámečku se používá k zobrazení každého typu dokumentu.

Dokumenty jsou součástí standardního směrování příkazů architektury a následně přijímají příkazy ze standardních komponent uživatelského rozhraní (například položka nabídky Uložit soubor). Dokument přijímá příkazy předané aktivním zobrazením. Pokud dokument nezpracuje daný příkaz, předá příkaz šabloně dokumentu, která ho spravuje.

Při úpravě dat dokumentu musí každé zobrazení tyto úpravy odrážet. CDocument poskytuje člena UpdateAllViews funkce, která vás upozorní na zobrazení těchto změn, aby se zobrazení mohly podle potřeby překreslit. Architektura také vyzve uživatele, aby před zavřením souboru uložil upravený soubor.

Pokud chcete implementovat dokumenty v typické aplikaci, musíte udělat toto:

  • Odvodit třídu z CDocument každého typu dokumentu.

  • Přidejte členské proměnné pro ukládání dat jednotlivých dokumentů.

  • Implementujte členské funkce pro čtení a úpravy dat dokumentu. Zobrazení dokumentu jsou nejdůležitějšími uživateli těchto členských funkcí.

  • Přepište členskou CObject::Serialize funkci ve třídě dokumentu, která zapisuje a čte data dokumentu na disk a z disku.

CDocument podporuje odesílání dokumentu e-mailem, pokud je k dispozici podpora pošty (MAPI). Viz články MAPI a podpora MAPI v prostředí MFC.

Další informace naleznete v CDocumenttématu Serializace, Document/View Architecture Topics a Document/View Creation.

Hierarchie dědičnosti

CObject

CCmdTarget

CDocument

Požadavky

Záhlaví:afxwin.h

CDocument::AddView

Voláním této funkce připojíte zobrazení k dokumentu.

void AddView(CView* pView);

Parametry

pView
Odkazuje na přidané zobrazení.

Poznámky

Tato funkce přidá zadané zobrazení do seznamu zobrazení přidružených k dokumentu; funkce také nastaví ukazatel dokumentu zobrazení na tento dokument. Architektura volá tuto funkci při připojování nově vytvořeného objektu zobrazení k dokumentu; k tomu dochází v reakci na příkaz Nový soubor, Otevřít soubor nebo Nové okno nebo když je rozděleno okno rozdělovače.

Tuto funkci zavolejte jenom v případě, že ručně vytváříte a připojujete zobrazení. Obvykle necháte architekturu propojit dokumenty a zobrazení definováním objektu CDocTemplate pro přidružení třídy dokumentu, třídy zobrazení a třídy okna rámečku.

Příklad

// The following example toggles two views in an SDI (single document
// interface) frame window. A design decision must be made as to
// whether to leave the inactive view connected to the document,
// such that the inactive view continues to receive OnUpdate
// notifications from the document. It is usually desirable to
// keep the inactive view continuously in sync with the document, even
// though it is inactive. However, doing so incurs a performance cost,
// as well as the programming cost of implementing OnUpdate hints.
// It may be less expensive, in terms of performance and/or programming,
// to re-sync the inactive view with the document only with it is
// reactivated. This example illustrates this latter approach, by
// reconnecting the newly active view and disconnecting the newly
// inactive view, via calls to CDocument::AddView and RemoveView.

void CMainFrame::OnViewChange(UINT nCmdID)
// There is an ON_COMMAND_RANGE message map entry associated with
// OnViewChange:
// ON_COMMAND_RANGE(ID_VIEW_CHANGE1, ID_VIEW_CHANGE2, &OnViewChange)
{
   CView *pViewAdd;
   CView *pViewRemove;
   CDocument *pDoc = GetActiveDocument();

   // cvView1 and cvView2 are enum members defined in my CMainFrame class
   if ((nCmdID == ID_VIEW_CHANGE1) && (m_currentView == cvView1))
      return;
   if ((nCmdID == ID_VIEW_CHANGE2) && (m_currentView == cvView2))
      return;

   if (nCmdID == ID_VIEW_CHANGE2)
   {
      if (m_pView2 == NULL)
      {
         m_pView1 = GetActiveView();
         m_pView2 = new CMyView2;

         //Note that if OnSize has been overridden in CMyView2
         //and GetDocument() is used in this override it can
         //cause assertions and, if the assertions are ignored,
         //cause access violation.

         m_pView2->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, rectDefault, this,
                          AFX_IDW_PANE_FIRST + 1, NULL);
      }
      pViewAdd = m_pView2;
      pViewRemove = m_pView1;
      m_currentView = cvView2;
   }
   else
   {
      pViewAdd = m_pView1;
      pViewRemove = m_pView2;
      m_currentView = cvView1;
   }

   // Set the child i.d. of the active view to AFX_IDW_PANE_FIRST,
   // so that CFrameWnd::RecalcLayout will allocate to this
   // "first pane" that portion of   the frame window's client area
   // not allocated to control   bars.  Set the child i.d. of the
   // other view to anything other than AFX_IDW_PANE_FIRST; this
   // examples switches the child id's of the two views.

   int nSwitchChildID = pViewAdd->GetDlgCtrlID();
   pViewAdd->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
   pViewRemove->SetDlgCtrlID(nSwitchChildID);

   // Show the newly active view and hide the inactive view.

   pViewAdd->ShowWindow(SW_SHOW);
   pViewRemove->ShowWindow(SW_HIDE);

   // Connect the newly active view to the document, and
   // disconnect the inactive view.
   pDoc->AddView(pViewAdd);
   pDoc->RemoveView(pViewRemove);

   SetActiveView(pViewAdd);
   RecalcLayout();
}

CDocument::BeginReadChunks

Inicializuje čtení bloků dat.

virtual void BeginReadChunks ();

Poznámky

CDocument::CanCloseFrame

Volá se rozhraním před oknem rámečku, ve kterém je dokument zavřený.

virtual BOOL CanCloseFrame(CFrameWnd* pFrame);

Parametry

pFrame
Odkazuje na okno rámečku zobrazení připojeného k dokumentu.

Vrácená hodnota

Nenulové, pokud je bezpečné zavřít okno rámečku; jinak 0.

Poznámky

Výchozí implementace zkontroluje, jestli se v dokumentu zobrazují jiná okna s rámečkem. Pokud je zadané okno rámečku poslední okno, které dokument zobrazuje, funkce vyzve uživatele, aby dokument uložil, pokud byl změněn. Tuto funkci přepište, pokud chcete provést speciální zpracování při zavření okna rámečku. Jedná se o pokročilý přepis.

CDocument::CDocument

CDocument Vytvoří objekt.

CDocument();

Poznámky

Architektura zpracovává vytváření dokumentů za vás. OnNewDocument Přepište členskou funkci tak, aby prováděla inicializaci na základě jednotlivých dokumentů. To je zvlášť důležité v aplikacích s jedním rozhraním dokumentů (SDI).

CDocument::ClearChunkList

Vymaže seznam bloků dat.

virtual void ClearChunkList ();

Poznámky

CDocument::ClearPathName

Vymaže cestu k objektu dokumentu.

virtual void ClearPathName();

Poznámky

Vymazání cesty z objektu CDocument způsobí, že aplikace vyzve uživatele při dalším uložení dokumentu. Příkaz Uložit se tak chová jako příkaz Uložit jako.

CDocument::DeleteContents

Volal rozhraní pro odstranění dat dokumentu bez zničení samotného objektu CDocument .

virtual void DeleteContents();

Poznámky

Nazývá se těsně před zničením dokumentu. Volá se také, aby byl dokument před opětovným použitím prázdný. To je zvlášť důležité pro aplikaci SDI, která používá pouze jeden dokument; dokument se znovu použije při každém vytvoření nebo otevření jiného dokumentu. Voláním této funkce implementujete příkaz Upravit vymazat vše nebo podobný příkaz, který odstraní všechna data dokumentu. Výchozí implementace této funkce nic nedělá. Přepište tuto funkci, aby se odstranila data v dokumentu.

Příklad

// This example is the handler for an Edit Clear All command.
void CExampleDoc::OnEditClearAll()
{
   DeleteContents();
   UpdateAllViews(NULL);
}

void CExampleDoc::DeleteContents()
{
   // Re-initialize document data here.
}

CDocument::FindChunk

Vyhledá blok dat se zadaným identifikátorem GUID.

virtual POSITION FindChunk(
    REFCLSID guid,
    DWORD pid);

Parametry

guid
Určuje identifikátor GUID bloku dat, který se má najít.

pid
Určuje PID bloku dat, který se má najít.

Vrácená hodnota

Umístění v interním seznamu bloků dat v případě úspěchu Jinak NULL.

Poznámky

CDocument::GetAdapter

Vrátí ukazatel na objekt, který implementuje IDocument rozhraní.

virtual ATL::IDocument* GetAdapter();

Vrácená hodnota

Ukazatel na objekt implementuje IDocument rozhraní.

Poznámky

CDocument::GetDocTemplate

Voláním této funkce získáte ukazatel na šablonu dokumentu pro tento typ dokumentu.

CDocTemplate* GetDocTemplate() const;

Vrácená hodnota

Ukazatel na šablonu dokumentu pro tento typ dokumentu nebo hodnotu NULL, pokud dokument není spravován šablonou dokumentu.

Příklad

// This example accesses the doc template object to construct
// a default document name such as SHEET.XLS, where "sheet"
// is the base document name and ".xls" is the file extension
// for the document type.
CString strDefaultDocName, strBaseName, strExt;
CDocTemplate *pDocTemplate = GetDocTemplate();
if (!pDocTemplate->GetDocString(strBaseName, CDocTemplate::docName) || !pDocTemplate->GetDocString(strExt, CDocTemplate::filterExt))
{
   AfxThrowUserException(); // These doc template strings will
                            // be available if you created the application using AppWizard
                            // and specified the file extension as an option for
                            // the document class produced by AppWizard.
}
strDefaultDocName = strBaseName + strExt;

CDocument::GetFile

Voláním této členské funkce získáte ukazatel na CFile objekt.

virtual CFile* GetFile(
    LPCTSTR lpszFileName,
    UINT nOpenFlags,
    CFileException* pError);

Parametry

lpszFileName
Řetězec, který je cestou k požadovanému souboru. Cesta může být relativní nebo absolutní.

pError
Ukazatel na existující objekt výjimky souboru, který označuje stav dokončení operace.

nOpenFlags
Režim sdílení a přístupu Určuje akci, která se má provést při otevření souboru. Možnosti uvedené v konstruktoru CFile::CFile CFile můžete kombinovat pomocí bitové operátoru OR (|). Vyžaduje se jedno oprávnění přístupu a jedna možnost sdílení; a modeCreatemodeNoInherit režimy jsou volitelné.

Vrácená hodnota

Ukazatel na CFile objekt.

CDocument::GetFirstViewPosition

Voláním této funkce získáte pozici prvního zobrazení v seznamu zobrazení přidružených k dokumentu.

virtual POSITION GetFirstViewPosition() const;

Vrácená hodnota

Hodnota POSITION , kterou lze použít pro iteraci s členovou GetNextView funkcí.

Příklad

//To get the first view in the list of views:
//To get the first view in the list of views:
// POSITION pos = GetFirstViewPosition();
// CView* pFirstView = GetNextView(pos);
//
// This example uses CDocument::GetFirstViewPosition
// and GetNextView to repaint each view.
// An easier way to accomplish the same result is to call
// UpdateAllViews(NULL);
void CExampleDoc::OnRepaintAllViews()
{
   POSITION pos = GetFirstViewPosition();
   while (pos != NULL)
   {
      CView *pView = GetNextView(pos);
      pView->UpdateWindow();
   }
}

CDocument::GetNextView

Voláním této funkce provedete iteraci ve všech zobrazeních dokumentu.

virtual CView* GetNextView(POSITION& rPosition) const;

Parametry

rPosition
Odkaz na POSITION hodnotu vrácenou předchozím voláním GetNextView nebo GetFirstViewPosition členské funkce. Tato hodnota nesmí být NULL.

Vrácená hodnota

Ukazatel na zobrazení identifikovaný uživatelem rPosition.

Poznámky

Funkce vrátí zobrazení identifikované a rPosition pak nastaví rPositionPOSITION hodnotu dalšího zobrazení v seznamu. Pokud je načtené zobrazení poslední v seznamu, rPosition je nastaveno na NULLhodnotu .

Příklad

//To get the first view in the list of views:
//To get the first view in the list of views:
// POSITION pos = GetFirstViewPosition();
// CView* pFirstView = GetNextView(pos);
//
// This example uses CDocument::GetFirstViewPosition
// and GetNextView to repaint each view.
// An easier way to accomplish the same result is to call
// UpdateAllViews(NULL);
void CExampleDoc::OnRepaintAllViews()
{
   POSITION pos = GetFirstViewPosition();
   while (pos != NULL)
   {
      CView *pView = GetNextView(pos);
      pView->UpdateWindow();
   }
}

CDocument::GetPathName

Voláním této funkce získáte plně kvalifikovanou cestu k souboru disku dokumentu.

const CString& GetPathName() const;

Vrácená hodnota

Cesta k dokumentu je plně kvalifikovaná. Tento řetězec je prázdný, pokud nebyl dokument uložen nebo nemá přidružený diskový soubor.

CDocument::GetThumbnail

Vytvoří rastrový obrázek, který bude používat poskytovatel miniatur k zobrazení miniatury.

virtual BOOL GetThumbnail(
    UINT cx,
    HBITMAP* phbmp,
    DWORD* pdwAlpha);

Parametry

cx
Určuje šířku a výšku rastrového obrázku.

phbmp
Obsahuje popisovač rastrového obrázku, když funkce úspěšně vrátí.

pdwAlpha
DWORD Obsahuje zadání hodnoty alfa kanálu, když funkce úspěšně vrátí.

Vrácená hodnota

Vrátí TRUE , pokud byl rastrový obrázek pro miniaturu úspěšně vytvořen; v opačném případě FALSE.

Poznámky

CDocument::GetTitle

Voláním této funkce získáte název dokumentu, který je obvykle odvozený z názvu souboru dokumentu.

const CString& GetTitle() const;

Vrácená hodnota

Název dokumentu.

CDocument::InitializeSearchContent

Volá se k inicializaci vyhledávacího obsahu pro obslužnou rutinu vyhledávání.

virtual void InitializeSearchContent ();

Poznámky

Přepište tuto metodu v odvozené třídě pro inicializaci obsahu vyhledávání. Obsah by měl být řetězec s částmi oddělenými znakem ;. Například "point; Obdélník; ole item".

CDocument::IsModified

Voláním této funkce určíte, jestli byl dokument od posledního uložení změněn.

virtual BOOL IsModified();

Vrácená hodnota

Nenulové, pokud byl dokument změněn od posledního uložení; jinak 0.

CDocument::IsSearchAndOrganizeHandler

Určuje, zda byla tato instance vytvořena pro obslužnou rutinu CDocument Vyhledávání a uspořádání.

BOOL IsSearchAndOrganizeHandler() const;

Vrácená hodnota

Vrátí TRUE , pokud byla tato instance CDocument vytvořena pro obslužnou rutinu Vyhledávání a uspořádání.

Poznámky

V současné době tato funkce vrací pouze TRUE obslužné rutiny rich preview implementované na mimo procesový server. Můžete nastavit příslušné příznaky (m_bPreviewHandlerMode, m_bSearchMode, m_bGetThumbnailMode) na úrovni aplikace, aby tato funkce vrátila TRUE.

CDocument::LoadDocumentFromStream

Volána pro načtení dat dokumentu ze streamu.

virtual HRESULT LoadDocumentFromStream(
    IStream* pStream,
    DWORD dwGrfMode);

Parametry

pStream
Ukazatel na datový proud. Tento datový proud poskytuje prostředí.

dwGrfMode
Režim přístupu ke streamu

Vrácená hodnota

S_OK pokud operace načítání proběhne úspěšně, jinak HRESULT s kódem chyby.

Poznámky

Tuto metodu můžete přepsat v odvozené třídě a přizpůsobit tak, jak načíst data z datového proudu.

CDocument::m_bGetThumbnailMode

Určuje, že CDocument objekt byl vytvořen knihovnou dllhost pro miniatury. Měla by být vrácena CView::OnDrawse změnami .

BOOL m_bGetThumbnailMode;

Poznámky

TRUE označuje, že dokument byl vytvořen knihovnou dllhost pro miniatury.

CDocument::m_bPreviewHandlerMode

Určuje, že CDocument objekt byl vytvořen prevhost pro Rich Preview. Měla by být vrácena CView::OnDrawse změnami .

BOOL m_bPreviewHandlerMode;

Poznámky

TRUE označuje, že dokument byl vytvořen prevhost pro Rich Preview.

CDocument::m_bSearchMode

Určuje, že CDocument objekt byl vytvořen indexerem nebo jinou vyhledávací aplikací.

BOOL m_bSearchMode;

Poznámky

TRUE označuje, že dokument byl vytvořen indexerem nebo jinou vyhledávací aplikací.

CDocument::m_clrRichPreviewBackColor

Určuje barvu pozadí okna náhledu s formátováním. Tato barva je nastavena hostitelem.

COLORREF m_clrRichPreviewBackColor;

Poznámky

CDocument::m_clrRichPreviewTextColor

Určuje barvu popředí okna náhledu s formátováním. Tato barva je nastavena hostitelem.

COLORREF m_clrRichPreviewTextColor;

Poznámky

CDocument::m_lfRichPreviewFont

Určuje písmo textu pro okno náhledu ve formátu RTF. Tyto informace o písmu jsou nastaveny hostitelem.

CFont m_lfRichPreviewFont;

Poznámky

CDocument::OnBeforeRichPreviewFontChanged

Volá se před změnou písma Rich Preview.

virtual void OnBeforeRichPreviewFontChanged();

Poznámky

CDocument::OnChangedViewList

Volá se rozhraním po přidání nebo odebrání zobrazení z dokumentu.

virtual void OnChangedViewList();

Poznámky

Výchozí implementace této funkce zkontroluje, jestli je odebráno poslední zobrazení, a pokud ano, odstraní dokument. Tuto funkci přepište, pokud chcete provést speciální zpracování, když architektura přidá nebo odebere zobrazení. Pokud například chcete, aby dokument zůstal otevřený i v případě, že k němu nejsou připojená žádná zobrazení, přepište tuto funkci.

CDocument::OnCloseDocument

Volá se rozhraním při zavření dokumentu, obvykle jako součást příkazu Zavřít soubor.

virtual void OnCloseDocument();

Poznámky

Výchozí implementace této funkce zničí všechny rámce použité k zobrazení dokumentu, zavře zobrazení, vyčistí obsah dokumentu a potom zavolá DeleteContents členskou funkci, která odstraní data dokumentu.

Tuto funkci přepište, pokud chcete provést speciální zpracování čištění při zavření dokumentu rozhraním. Pokud například dokument představuje záznam v databázi, můžete tuto funkci přepsat a zavřít databázi. Měli byste volat verzi základní třídy této funkce z přepsání.

CDocument::OnCreatePreviewFrame

Volal ho architektura, když potřebuje vytvořit rámec náhledu pro Rich Preview.

virtual BOOL OnCreatePreviewFrame();

Vrácená hodnota

Vrátí TRUE , pokud je rámec úspěšně vytvořen; jinak FALSE.

Poznámky

CDocument::OnDocumentEvent

Volá se rozhraním v reakci na událost dokumentu.

virtual void OnDocumentEvent(DocumentEvent deEvent);

Parametry

deEvent
[v] Výčtový datový typ, který popisuje typ události.

Poznámky

Události dokumentu můžou mít vliv na více tříd. Tato metoda zodpovídá za zpracování událostí dokumentu, které ovlivňují jiné třídy než CDocument třídy. V současné době je jedinou třídou, která musí reagovat na události dokumentu, třídaCDataRecoveryHandler. Třída CDocument má další přepisovatelné metody zodpovědné za zpracování účinku na CDocument.

Následující tabulka uvádí možné hodnoty a deEvent události, které odpovídají.

Hodnota Odpovídající událost
onAfterNewDocument Byl vytvořen nový dokument.
onAfterOpenDocument Byl otevřen nový dokument.
onAfterSaveDocument Dokument byl uložen.
onAfterCloseDocument Dokument byl zavřený.

CDocument::OnDrawThumbnail

Přepište tuto metodu v odvozené třídě a nakreslete miniaturu.

virtual void OnDrawThumbnail(
    CDC& dc,
    LPRECT lprcBounds);

Parametry

dc
Odkaz na kontext zařízení

lprcBounds
Určuje ohraničující obdélník oblasti, ve které se má miniatura nakreslit.

Poznámky

CDocument::OnFileSendMail

Odešle zprávu prostřednictvím rezidentního poštovního hostitele (pokud existuje) s dokumentem jako přílohou.

void OnFileSendMail();

Poznámky

OnFileSendMail volání OnSaveDocument k serializaci (uložení) bez názvu a změněných dokumentů do dočasného souboru, který se pak odešle prostřednictvím elektronické pošty. Pokud dokument nebyl změněn, není nutný dočasný soubor; původní je odeslán. OnFileSendMail Načte MAPI32.DLL, pokud ještě nebyl načten.

Speciální implementace OnFileSendMail pro COleDocument zpracování složených souborů správně.

CDocument podporuje odesílání dokumentu e-mailem, pokud je k dispozici podpora pošty (MAPI). Přečtěte si články o tématech MAPI a podpoře MAPI v prostředí MFC.

CDocument::OnLoadDocumentFromStream

Volá se rozhraním, když potřebuje načíst data dokumentu z datového proudu.

virtual HRESULT OnLoadDocumentFromStream(
    IStream* pStream,
    DWORD grfMode);

Parametry

pStream
Ukazatel na příchozí datový proud.

grfMode
Režim přístupu ke streamu

Vrácená hodnota

S_OK pokud je zatížení úspěšné; jinak kód chyby.

Poznámky

CDocument::OnNewDocument

Volá se rozhraním jako součást příkazu File New ( Nový soubor).

virtual BOOL OnNewDocument();

Vrácená hodnota

Nenulové, pokud byl dokument úspěšně inicializován; jinak 0.

Poznámky

Výchozí implementace této funkce volá DeleteContents člena, aby se zajistilo, že dokument je prázdný a pak označí nový dokument jako čistý. Tuto funkci přepište tak, aby inicializovala datovou strukturu pro nový dokument. Měli byste volat verzi základní třídy této funkce z přepsání.

Pokud uživatel zvolí příkaz Nový soubor v aplikaci SDI, architektura použije tuto funkci k opětovné inicializaci existujícího dokumentu místo vytvoření nového dokumentu. Pokud uživatel zvolí File New v aplikaci s více rozhraními dokumentů (MDI), architektura pokaždé vytvoří nový dokument a potom zavolá tuto funkci, aby ji inicializovala. Inicializační kód musíte umístit do této funkce místo do konstruktoru, aby příkaz File New byl efektivní v aplikacích SDI.

Všimněte si, že existují případy, kdy OnNewDocument se volá dvakrát. K tomu dochází, když je dokument vložen jako technologie ActiveX dokumentový server. Funkce je nejprve volána metodou CreateInstance (vystavenou COleObjectFactory-odvozenou třídou) a podruhé metodou InitNew (vystavenou COleServerDoc-odvozenou třídou).

Příklad

Následující příklady ilustrují alternativní metody inicializace objektu dokumentu.

// Method 1: In an MDI application, the simplest place to do
// initialization is in the document constructor.  The framework
// always creates a new document object for File New or File Open.
CExampleDoc::CExampleDoc()
{
   // Do initialization of MDI document here.
}

 

// Method 2: In an SDI or MDI application, do all initialization
// in an override of OnNewDocument, if you are certain that
// the initialization is effectively saved upon File Save
// and fully restored upon File Open, via serialization.
BOOL CMyDoc::OnNewDocument()
{
   if (!CDocument::OnNewDocument())
   {
      return FALSE;
   }

   // Do initialization of new document here.

   return TRUE;
}

 

// Method 3: If the initialization of your document is not
// effectively saved and restored by serialization (during File Save
// and File Open), then implement the initialization in single
// function (named InitMyDocument in this example).  Call the
// shared initialization function from overrides of both
// OnNewDocument and OnOpenDocument.
BOOL CExampleDoc::OnNewDocument()
{
   if (!CDocument::OnNewDocument())
   {
      return FALSE;
   }

   InitMyDocument(); // call your shared initialization function

   // If your new document object requires additional initialization
   // not necessary when the document is deserialized via File Open,
   // then perform that additional initialization here.

   return TRUE;
}

CDocument::OnOpenDocument

Volá se rozhraním jako součást příkazu Otevřít soubor.

virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);

Parametry

lpszPathName
Odkazuje na cestu k dokumentu, který se má otevřít.

Vrácená hodnota

Nenulové, pokud byl dokument úspěšně načten; jinak 0.

Poznámky

Výchozí implementace této funkce otevře zadaný soubor, zavolá DeleteContents členskou funkci, aby se zajistilo, že dokument je prázdný, volání CObject::Serialize ke čtení obsahu souboru a poté označí dokument jako čistý. Tuto funkci přepište, pokud chcete použít něco jiného než mechanismus archivace nebo mechanismus souborů. Můžete například napsat aplikaci, ve které dokumenty představují záznamy v databázi místo samostatných souborů.

Pokud uživatel zvolí příkaz Otevřít soubor v aplikaci SDI, architektura použije tuto funkci k opětovné inicializaci existujícího CDocument objektu místo vytvoření nového objektu. Pokud uživatel zvolí Soubor Otevřít v aplikaci MDI, architektura pokaždé vytvoří nový CDocument objekt a pak zavolá tuto funkci, aby ji inicializoval. Inicializační kód musíte umístit do této funkce místo do konstruktoru, aby příkaz Otevřít soubor byl efektivní v aplikacích SDI.

Příklad

Následující příklady ilustrují alternativní metody inicializace objektu dokumentu.

// Method 1: In an MDI application, the simplest place to do
// initialization is in the document constructor.  The framework
// always creates a new document object for File New or File Open.
CExampleDoc::CExampleDoc()
{
   // Do initialization of MDI document here.
}

 

// Method 2: In an SDI or MDI application, do all initialization
// in an override of OnNewDocument, if you are certain that
// the initialization is effectively saved upon File Save
// and fully restored upon File Open, via serialization.
BOOL CMyDoc::OnNewDocument()
{
   if (!CDocument::OnNewDocument())
   {
      return FALSE;
   }

   // Do initialization of new document here.

   return TRUE;
}

 

// Method 3: If the initialization of your document is not
// effectively saved and restored by serialization (during File Save
// and File Open), then implement the initialization in single
// function (named InitMyDocument in this example).  Call the
// shared initialization function from overrides of both
// OnNewDocument and OnOpenDocument.
BOOL CExampleDoc::OnNewDocument()
{
   if (!CDocument::OnNewDocument())
   {
      return FALSE;
   }

   InitMyDocument(); // call your shared initialization function

   // If your new document object requires additional initialization
   // not necessary when the document is deserialized via File Open,
   // then perform that additional initialization here.

   return TRUE;
}

 

// Additional example of OnOpenDocument()
BOOL CExampleDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
   if (!CDocument::OnOpenDocument(lpszPathName))
   {
      return FALSE;
   }

   InitMyDocument(); // call your shared initialization function

   return TRUE;
}

CDocument::OnPreviewHandlerQueryFocus

Nasměruje obslužnou rutinu náhledu tak, aby vrátila načtenou HWND z volání GetFocus funkce.

virtual HRESULT OnPreviewHandlerQueryFocus(HWND* phwnd);

Parametry

phwnd
[ven] Pokud tato metoda vrátí, obsahuje ukazatel na HWND vrácený voláním GetFocus funkce z vlákna popředí obslužné rutiny náhledu.

Vrácená hodnota

Vrátí S_OK hodnotu, pokud je úspěšná, nebo chybovou hodnotu v opačném případě.

Poznámky

CDocument::OnPreviewHandlerTranslateAccelerator

Nasměruje obslužnou rutinu náhledu tak, aby zpracovávala stisknutí kláves předané z pumpy zprávy procesu, ve kterém je spuštěná obslužná rutina náhledu.

virtual HRESULT OnPreviewHandlerTranslateAccelerator(MSG* pmsg);

Parametry

pmsg
[v] Ukazatel na zprávu okna

Vrácená hodnota

Pokud lze zprávu stisknutí kláves zpracovat obslužnou rutinou náhledu, obslužná rutina ji zpracuje a vrátí S_OK. Pokud obslužná rutina náhledu nemůže zpracovat zprávu stisknutí kláves, nabídne ji hostiteli prostřednictvím IPreviewHandlerFrame::TranslateAccelerator. Pokud hostitel zpracuje zprávu, tato metoda vrátí S_OK. Pokud hostitel nezpracuje zprávu, tato metoda vrátí S_FALSE.

Poznámky

CDocument::OnRichPreviewBackColorChanged

Volá se při změně barvy pozadí s formátem RTF.

virtual void OnRichPreviewBackColorChanged();

Poznámky

CDocument::OnRichPreviewFontChanged

Volá se, když se změnilo písmo Rich Preview.

virtual void OnRichPreviewFontChanged();

Poznámky

CDocument::OnRichPreviewSiteChanged

Volá se při změně webu s bohatým náhledem.

virtual void OnRichPreviewSiteChanged();

Poznámky

CDocument::OnRichPreviewTextColorChanged

Volá se při změně barvy textu ve formátu RTF.

virtual void OnRichPreviewTextColorChanged();

Poznámky

CDocument::OnSaveDocument

Volá se rozhraním jako součást příkazu Uložit soubor nebo Uložit jako.

virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);

Parametry

lpszPathName
Odkazuje na plně kvalifikovanou cestu, do které se má soubor uložit.

Vrácená hodnota

Nenulové, pokud byl dokument úspěšně uložen; jinak 0.

Poznámky

Výchozí implementace této funkce otevře zadaný soubor, volání CObject::Serialize pro zápis dat dokumentu do souboru a poté označí dokument jako čistý. Tuto funkci přepište, pokud chcete provést speciální zpracování při uložení dokumentu rozhraním. Můžete například napsat aplikaci, ve které dokumenty představují záznamy v databázi místo samostatných souborů.

CDocument::OnUnloadHandler

Volá se rozhraním při uvolnění obslužné rutiny preview.

virtual void OnUnloadHandler();

Poznámky

CDocument::OnUpdateFileSendMail

ID_FILE_SEND_MAIL Povolí příkaz, pokud je k dispozici podpora pošty (MAPI).

void OnUpdateFileSendMail(CCmdUI* pCmdUI);

Parametry

pCmdUI
Ukazatel na CCmdUI objekt přidružený k ID_FILE_SEND_MAIL příkazu.

Poznámky

V opačném případě funkce odebere ID_FILE_SEND_MAIL příkaz z nabídky, včetně oddělovačů nad nebo pod položkou nabídky podle potřeby. MapI je povoleno, pokud MAPI32.DLL je v cestě a v části WIN.INI [Pošta] souboru MAPI=1. Většina aplikací tento příkaz umístí do nabídky Soubor.

CDocument podporuje odesílání dokumentu e-mailem, pokud je k dispozici podpora pošty (MAPI). Přečtěte si články o tématech MAPI a podpoře MAPI v prostředí MFC.

CDocument::PreCloseFrame

Tato členová funkce je volána architekturou před zničením okna rámce.

virtual void PreCloseFrame(CFrameWnd* pFrame);

Parametry

pFrame
Ukazatel na CFrameWnd přidružený CDocument objekt.

Poznámky

Lze ji přepsat, aby poskytovala vlastní vyčištění, ale nezapomeňte také volat základní třídu.

Výchozí hodnota PreCloseFrame nedělá nic v CDocument. Odvozené CDocumenttřídy COleDocument a CRichEditDoc používají tuto členovou funkci.

CDocument::ReadNextChunkValue

Přečte další hodnotu bloku.

virtual BOOL ReadNextChunkValue(IFilterChunkValue** ppValue);

Parametry

ppValue
[ven] Když funkce vrátí hodnotu, ppValue která byla načtena.

Vrácená hodnota

Nenulové, pokud je úspěšné; jinak 0.

Poznámky

CDocument::ReleaseFile

Tato členová funkce je volána architekturou k vydání souboru, aby byla k dispozici pro použití jinými aplikacemi.

virtual void ReleaseFile(
    CFile* pFile,
    BOOL bAbort);

Parametry

pFile
Ukazatel na objekt, CFile který se má uvolnit.

bAbort
Určuje, zda má být soubor vydán pomocí nebo CFile::CloseCFile::Abort. FALSE je-li soubor vydán pomocí CFile::Close; TRUE pokud je soubor vydán pomocí CFile::Abort.

Poznámky

Pokud bAbort je TRUE, ReleaseFile volání CFile::Aborta soubor se uvolní. CFile::Abort nevyvolá výjimku.

Pokud bAbort je FALSE, ReleaseFile volání CFile::Close a soubor se uvolní.

Přepište tuto členovou funkci tak, aby před vydáním souboru vyžadovala akci uživatele.

CDocument::RemoveChunk

Odebere blok dat se zadaným GUIDtextem .

virtual void RemoveChunk(
    REFCLSID guid,
    DWORD pid);

Parametry

Guid
Určuje GUID blok dat, který se má odebrat.

Pid
Určuje PID blok dat, který se má odebrat.

Poznámky

CDocument::RemoveView

Voláním této funkce odpojete zobrazení z dokumentu.

void RemoveView(CView* pView);

Parametry

pView
Odkazuje na odebrané zobrazení.

Poznámky

Tato funkce odebere zadané zobrazení ze seznamu zobrazení přidružených k dokumentu; nastaví také ukazatel dokumentu zobrazení na NULL. Tato funkce je volána architekturou, když je okno rámečku zavřené nebo podokno rozdělovače je uzavřeno.

Tuto funkci zavolejte jenom v případě, že zobrazení odpojíte ručně. Obvykle necháte architekturu odpojit dokumenty a zobrazení definováním objektu CDocTemplate pro přidružení třídy dokumentu, třídy zobrazení a třídy okna rámečku.

Podívejte se na AddView příklad ukázkové implementace.

CDocument::ReportSaveLoadException

Volá se, pokud se při ukládání nebo načítání dokumentu vyvolá výjimka (obvykle CFileException a nebo CArchiveException).

virtual void ReportSaveLoadException(
    LPCTSTR lpszPathName,
    CException* e,
    BOOL bSaving,
    UINT nIDPDefault);

Parametry

lpszPathName
Odkazuje na název dokumentu, který byl uložen nebo načten.

e
Odkazuje na výjimku, která byla vyvolán. Může být NULL.

bSaving
Příznak označující, jaká operace probíhala; nenulové, pokud byl dokument uložen, 0, pokud byl dokument načten.

nIDPDefault
Identifikátor chybové zprávy, která se má zobrazit, pokud funkce neurčovala konkrétnější.

Poznámky

Výchozí implementace zkoumá objekt výjimky a hledá chybovou zprávu, která konkrétně popisuje příčinu. Pokud se konkrétní zpráva nenajde nebo pokud e je NULL, použije se obecná zpráva zadaná parametrem nIDPDefault . Funkce pak zobrazí pole se zprávou obsahující chybovou zprávu. Tuto funkci přepište, pokud chcete poskytnout další přizpůsobené chybové zprávy. Jedná se o pokročilý přepis.

CDocument::SaveModified

Volá se rozhraním před uzavřením upraveného dokumentu.

virtual BOOL SaveModified();

Vrácená hodnota

Nenulové, pokud je bezpečné pokračovat a zavřít dokument; 0, pokud by dokument neměl být zavřený.

Poznámky

Výchozí implementace této funkce zobrazí okno se zprávou s dotazem, zda má uživatel uložit změny v dokumentu, pokud byly provedeny. Tuto funkci přepište, pokud váš program vyžaduje jiný postup výzvy. Jedná se o pokročilý přepis.

CDocument::SetChunkValue

Nastaví hodnotu bloku dat.

virtual BOOL SetChunkValue (IFilterChunkValue* pValue);

Parametry

pValue
Určuje hodnotu bloku dat, která se má nastavit.

Vrácená hodnota

Nenulové, pokud je úspěšné; jinak 0.

Poznámky

CDocument::SetModifiedFlag

Volání této funkce po provedení jakýchkoli úprav dokumentu.

virtual void SetModifiedFlag(BOOL bModified = TRUE);

Parametry

bModified
Příznak označující, jestli byl dokument změněn.

Poznámky

Voláním této funkce konzistentně zajistíte, aby architektura před zavřením dokumentu vyzve uživatele k uložení změn. Obvykle byste měli použít výchozí hodnotu TRUE parametru bModified . Pokud chcete dokument označit jako čistý (neupravený), zavolejte tuto funkci s hodnotou FALSE.

CDocument::SetPathName

Voláním této funkce určíte plně kvalifikovanou cestu k souboru disku dokumentu.

virtual void SetPathName(
    LPCTSTR lpszPathName,
    BOOL bAddToMRU = TRUE);

Parametry

lpszPathName
Odkazuje na řetězec, který se má použít jako cesta k dokumentu.

bAddToMRU
Určuje, zda je název souboru přidán do seznamu naposledy použitých souborů (MRU). Pokud TRUEse přidá název souboru, pokud FALSEse nepřidá.

Poznámky

V závislosti na hodnotě bAddToMRU cesty se přidá nebo nepřidá do seznamu MRU, který aplikace udržuje. Všimněte si, že některé dokumenty nejsou přidružené k souboru disku. Tuto funkci zavolejte pouze v případě, že přepisujete výchozí implementaci pro otevírání a ukládání souborů používaných architekturou.

CDocument::SetTitle

Voláním této funkce určíte název dokumentu (řetězec zobrazený v záhlaví okna rámečku).

virtual void SetTitle(LPCTSTR lpszTitle);

Parametry

lpszTitle
Odkazuje na řetězec, který se má použít jako název dokumentu.

Poznámky

Voláním této funkce se aktualizují názvy všech oken s rámečkem, která dokument zobrazují.

CDocument::UpdateAllViews

Volání této funkce po úpravě dokumentu

void UpdateAllViews(
    CView* pSender,
    LPARAM lHint = 0L,
    CObject* pHint = NULL);

Parametry

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

lHint
Obsahuje informace o úpravě.

pHint
Odkazuje na objekt, který ukládá informace o úpravě.

Poznámky

Tuto funkci byste měli volat po volání SetModifiedFlag členské funkce. Tato funkce informuje každé zobrazení připojené k dokumentu s výjimkou zobrazení určeného uživatelem pSender, že byl dokument změněn. Tuto funkci obvykle voláte z třídy zobrazení poté, co uživatel změnil dokument prostřednictvím zobrazení.

Tato funkce volá CView::OnUpdate členskou funkci pro každé zobrazení dokumentu s výjimkou odesílajícího zobrazení, předávání pHint a lHint. Pomocí těchto parametrů předejte informace zobrazením o změnách dokumentu. Informace můžete kódovat pomocí lHint a/nebo můžete definovat -odvozenou CObjecttřídu k uložení informací o úpravách a předání objektu této třídy pomocí pHint. Přepište členskou CView::OnUpdate funkci ve vaší CView-odvozené třídě, aby se optimalizovala aktualizace zobrazení na základě předaných informací.

Příklad

void CExampleDoc::OnUpdateAllViews()
{
   UpdateAllViews(NULL);
}

Viz také

Mfc – ukázka MDIDOCVW
Mfc – ukázka SNAPVW
Mfc – ukázka NPP
CCmdTarget Třída
Graf hierarchie
CCmdTarget Třída
CView Třída
CDocTemplate Třída