Aracılığıyla paylaş


Etkin Belgeler

Etkin belgeler OLE'nin bileşik belge teknolojisini genişletir. Bu uzantılar görünümleri yöneten ek arabirimler biçiminde sağlanır, böylece nesneler kapsayıcılar içinde çalışır ve yine de görüntüleme ve yazdırma işlevleri üzerinde denetimi korur. Bu işlem, belgeleri hem yabancı çerçevelerde (Microsoft Office Bağlayıcısı veya Microsoft Internet Explorer gibi) hem de yerel çerçevelerde (ürünün kendi görünüm bağlantı noktaları gibi) görüntülemeyi mümkün kılar.

Bu bölümde, etkin belgeler için işlevsel gereksinimler açıklanmaktadır. Etkin belge bir veri kümesine sahiptir ve verilerin kaydedilip alınabileceği depolama alanına erişime sahiptir. Verilerinde bir veya daha fazla görünüm oluşturabilir ve yönetebilir. Etkin belge, OLE belgelerinin her zamanki ekleme ve yerinde etkinleştirme arabirimlerini desteklemenin yanı sıra, aracılığıyla IOleDocumentgörünüm oluşturma yeteneğini de iletir. Bu arabirim aracılığıyla kapsayıcı, etkin belgenin görüntüleyebileceği görünümleri oluşturmayı (ve muhtemelen numaralandırmayı) isteyebilir. Bu arabirim aracılığıyla, etkin belge kendi hakkında birden çok görünümü veya karmaşık dikdörtgeni destekleyip desteklemediği gibi çeşitli bilgiler de sağlayabilir.

Arabirimi aşağıdadır IOleDocument . Arabirimin IEnumOleDocumentViews türler için IOleDocumentView* standart bir OLE numaralandırıcısı olduğunu unutmayın.

interface IOleDocument : IUnknown
    {
    HRESULT CreateView(
        [in] IOleInPlaceSite *pIPSite,
        [in] IStream *pstm,
        [in] DWORD dwReserved,
        [out] IOleDocumentView **ppView);

    HRESULT GetDocMiscStatus([out] DWORD *pdwStatus);

    HRESULT EnumViews(
        [out] IEnumOleDocumentViews **ppEnum,
        [out] IOleDocumentView **ppView);
    }

Her etkin belgenin bu arabirime sahip bir görünüm çerçevesi sağlayıcısı olmalıdır. Belge bir kapsayıcıya eklenmediyse, etkin belge sunucusunun kendisi görünüm çerçevesini sağlamalıdır. Ancak, etkin belge etkin bir belge kapsayıcısında eklendiğinde, kapsayıcı görünüm çerçevesini sağlar.

Etkin bir belge, verilerinin bir veya daha fazla görünüm türünü (örneğin, normal, ana hat, sayfa düzeni vb.) oluşturabilir. Görünümler, verilerin görülebildiği filtreler gibi davranır. Belgede yalnızca bir görünüm türü olsa bile, yeni pencere işlevselliğini desteklemenin bir aracı olarak birden çok görünümü (örneğin, Office uygulaması liklerde Pencere menüsündeki Yeni Pencere öğesi) desteklemek isteyebilirsiniz.

Etkin Belgeler için Gereksinimler

Etkin bir belge kapsayıcısında görüntülenebilen etkin bir belgenin:

  • uygulamasını uygulayarak IPersistStorageOLE'nin Bileşik Dosyalarını depolama mekanizması olarak kullanın.

  • Dosyadan Oluştur da dahil olmak üzere OLE Belgelerinin temel ekleme özelliklerini destekleyin. Bu, , IOleObjectve IDataObjectarabirimlerini zorunlu kılmaktadırIPersistFile.

  • Her biri yerinde etkinleştirme yapabilen bir veya daha fazla görünümü destekleyin. Başka bir ifadeyle, görünümlerin arabirimleri IOleDocumentView ve arabirimleri (kapsayıcının IOleInPlaceSite ve IOleInPlaceActiveObject IOleInPlaceFrame arabirimleri IOleInPlaceObject kullanılarak) desteklemesi gerekir.

  • , ve IPrintstandart etkin belge arabirimlerini destekleyin.IOleDocumentIOleCommandTarget

Kapsayıcı tarafı arabirimlerinin ne zaman ve nasıl kullanılacağı hakkında bilgi bu gereksinimlerde açıklanmıştır.

Nesneleri Görüntüleme Gereksinimleri

Etkin bir belge, verilerinin bir veya daha fazla görünümünü oluşturabilir. İşlevsel olarak, bu görünümler verileri görüntülemek için belirli bir yönteme bağlantı noktaları gibidir. Etkin bir belge yalnızca tek bir görünümü destekliyorsa, etkin belge ve bu tek görünüm tek bir sınıf kullanılarak uygulanabilir. IOleDocument::CreateView aynı nesnenin IOleDocumentView arabirim işaretçisini döndürür.

Etkin bir belge kapsayıcısında temsil edilebilmesi için görünüm bileşeninin ve IOleInPlaceActiveObject ek olarak öğesini desteklemesi IOleInPlaceObject IOleDocumentViewgerekir:

interface IOleDocumentView : IUnknown
    {
    HRESULT SetInPlaceSite([in] IOleInPlaceSite *pIPSite);
    HRESULT GetInPlaceSite([out] IOleInPlaceSite **ppIPSite);
    HRESULT GetDocument([out] IUnknown **ppunk);
    [input_sync] HRESULT SetRect([in] LPRECT prcView);
    HRESULT GetRect([in] LPRECT prcView);
    [input_sync] HRESULT SetRectComplex(
        [in] LPRECT prcView,
        [in] LPRECT prcHScroll,
        [in] LPRECT prcVScroll,
        [in] LPRECT prcSizeBox);
    HRESULT Show([in] BOOL fShow);
    HRESULT UIActivate([in] BOOL fUIActivate);
    HRESULT Open(void);
    HRESULT CloseView([in] DWORD dwReserved);
    HRESULT SaveViewState([in] IStream *pstm);
    HRESULT ApplyViewState([in] IStream *pstm);
    HRESULT Clone(
        [in] IOleInPlaceSite *pIPSiteNew,
        [out] IOleDocumentView **ppViewNew);
    }

Her görünümün, görünüm çerçevesini ve görünüm bağlantı noktasını (HWND ve bu pencerede dikdörtgen bir alan) kapsülleyen ilişkili bir görünüm sitesi vardır. Site, standart IOleInPlaceSite arabirim olsa da bu işlevselliği kullanıma sunar. Tek bir HWND üzerinde birden fazla görünüm bağlantı noktası olabileceğini unutmayın.

Genellikle, her görünüm türünün farklı bir basılı gösterimi vardır. Bu nedenle görünümler ve ilgili görünüm siteleri sırasıyla ve IContinueCallbackise IPrint yazdırma arabirimlerini uygulamalıdır. Üstbilgiler, alt bilgiler, kenar boşlukları ve ilgili öğelerin doğru yazdırılması için, görünüm çerçevesinin yazdırma başladığında görüntüleme sağlayıcısıyla IPrint anlaşması gerekir. Görünüm sağlayıcısı, yazdırmayla ilgili olayların çerçevesini aracılığıyla IContinueCallbackbildirir. Bu arabirimlerin kullanımı hakkında daha fazla bilgi için bkz . Programlı Yazdırma.

Etkin bir belge yalnızca tek bir görünümü destekliyorsa, etkin belgenin ve bu tek görünümün tek bir somut sınıf kullanılarak uygulanabileceğini unutmayın. IOleDocument::CreateView yalnızca aynı nesnenin IOleDocumentView arabirim işaretçisini döndürür. Kısacası, yalnızca bir görünüm gerektiğinde iki ayrı nesne örneği olması gerekmez.

Görünüm nesnesi bir komut hedefi de olabilir. Bir görünüm uygulayarak IOleCommandTarget kapsayıcının kullanıcı arabiriminden kaynaklanan komutları alabilir (Yeni, Aç, Farklı Kaydet, Dosya menüsünde yazdır ve Düzenle menüsünde Kopyala, Yapıştır, Geri Al gibi). Daha fazla bilgi için bkz . İleti İşleme ve Komut Hedefleri.

Ayrıca bkz.

Etkin Belge Kapsaması