Aracılığıyla paylaş


Etkin belge

Etkin belge ole bileşik belge teknoloji genişletir. Bu uzantılar, böylece nesneler kapsayıcılara işlev ve henüz kendi görüntüleme ve yazdırma işlevlerinin kontrolünü korumak, görünümleri Yönet ek arabirimler biçiminde sağlanır. Bu işlem yabancı çerçeveler (örneğin, Microsoft Office Ciltçi'yi veya Microsoft Internet Explorer) hem de yerel çerçeveler (örneğin, ürünün kendi görünümü bağlantı noktaları) belgelerini görüntülemek olanaklı kılar.

Bu bölüm işlev açıklar Etkin belge için gereksinimleri. Etkin belgeyi bir veri kümesi sahibi ve olduğu yere veri kaydedilir ve depolama erişimi vardır. Bunu oluşturmak ve verileri üzerinde bir veya daha fazla görünümleri yönetme. Etkin belge görünümleri oluşturma yeteneğini iletişim kuran her zamanki gömme ve yerinde etkinleştirme arabirimleri ole belgelerin desteklemenin yanında, IOleDocument. Bu arabirim üzerinden, etkin belgeyi görüntülemek için görünümler oluşturmak (ve büyük olasılıkla numaralandırmak) kapsayıcı sorabilirsiniz. Bu arabirim üzerinden, etkin belgenin birden çok görünüm veya karmaşık dikdörtgenler destekleyip gibi kendisine hakkında çeşitli bilgiler de sağlayabilir.

Aşağıdaki IOleDocument arabirimi. Dikkat IEnumOleDocumentViews arabirimi olduğu için standart ole numaralayıcı IOleDocumentView * türleri.

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 belge bir çerçeve sağlayıcısını bu arabirimle olmalıdır. Belge bir kap içinde gömülü olmayan, etkin belge sunucu görünümü çerçeve sağlamalıdır. Ancak, etkin belgeyi etkin belge kapsayıcısında katıştırıldığında kapsayıcı görünümü çerçeve sağlar.

Bir veya daha fazla türde etkin bir belge oluşturabilirsiniz görünümleri verilerini (örneğin, normal, anahat, sayfa düzeni vb.). Görünümleri verileri görülebilir filtreleri gibi davranır. Belgenin yalnızca bir görünüm türü olsa bile, yine de birden çok görünüm yeni pencere işlevleri destekleyen bir araç olarak desteklemek istediğiniz (örneğin, Yeni Pencere üzerinde madde Pencere Office uygulamalarında menüsü).

Etkin belge için gereksinimler

Etkin belgeyi kapsayıcı içinde görüntülenen etkin bir belge gerekir:

  • OLE'ın dosyaları bileşik uygulayarak kendi depolama mekanizması olarak kullanmak IPersistStorage.

  • ole içeren belgeler, gömme temel özelliklerini destekleyen Dosyadan Oluştur. Bu arabirimler ilişkilendirilme IPersistFile, IOleObject, ve IDataObject.

  • Her hangi bir yerinde etkinleştirme özelliğine sahip bir veya daha fazla görünümleri destekler. Görünümler arabirimini desteklemesi gerekir, IOleDocumentView yanı sıra arabirimleri IOleInPlaceObject ve IOleInPlaceActiveObject (konteynerin kullanarak IOleInPlaceSite ve IOleInPlaceFrame arabirimleri).

  • Standart etkin belge arabirimlerini destekleyen IOleDocument, IOleCommandTarget, ve IPrint.

Bilgi ne zaman ve nasıl yan kapsayıcı arabirimleri kullanır bu gereksinimleri örtülü.

Görüntüleme nesneleri için gereksinimler

Bir veya daha fazla görünüm verilerini etkin bir belge oluşturabilirsiniz. İşlevsellik, bu görünümler verileri görüntülemek için belirli bir yöntemin üzerine bağlantı noktası gibidir. Etkin bir belgenin yalnızca tek bir görünüm destekliyorsa, etkin belge, tek bir görünümde tek sınıfı kullanılarak uygulanabilir. IOleDocument::CreateView aynı nesnenin verir IOleDocumentView arabirim işaretçisi.

Etkin belgeyi kapsayıcıda gösterilemeyecek kadar görünüm bileşen desteklemelidir IOleInPlaceObject ve IOleInPlaceActiveObject ek olarak IOleDocumentView:

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çeve ve Görünüm bağlantı noktası (hwnd ve bu pencerede dikdörtgen bir alan) kapsüller ve ilişkilendirilmiş görünümü site vardır. Site bu yine de standart işlevsellik IOleInPlaceSite arabirimi. Birden çok görünüm bağlantı noktası tek hwnd mümkün olduğunu unutmayın.

Genellikle, her görünüm türü farklı yazdırılan gösterimi vardır. Bu yüzden görünümleri ve karşılık gelen siteleri görüntüle baskı arabirimleri, uygulamalısınız IPrint ve IContinueCallback, sırasıyla. Görünüm kare görünümü sağlayıcı üzerinden ile anlaşmalıdır IPrint yazdırmaya başlayacağı, böylece üstbilgileri, altbilgileri ve kenar boşluklarını ilgili öğeleri doğru yazdırılır. Çerçeve yazdırma ile ilgili olayların sağlayıcısını bildirir IContinueCallback. Bu arabirimler, daha fazla bilgi için bkz: Program kullanarak yazdırma.

Etkin bir belgenin yalnızca tek bir görünüm destekliyorsa, sonra etkin belge ile tek bir görünümde somut bir sınıf kullanarak uygulanabilir olduğunu unutmayın. IOleDocument::CreateView sadece aynı nesnenin verir IOleDocumentView arabirim işaretçisi. Kısacası, tek bir görünümü gerekli olduğunda, iki ayrı nesne örnekleri olması gerekli değildir.

View nesnesi, aynı zamanda komut hedef olabilir. Uygulayarak IOleCommandTarget bir görünüm konteynerin kullanıcı arabiriminde kaynaklanan komutları alabilirler (gibi Yeni, açık, Kaydet, yazdırma , Dosya menüsü; and Copy, Paste, Undo on the Edit menu). Daha fazla bilgi için bkz. İleti işleme ve komutunun hedefi.

Ayrıca bkz.

Kavramlar

Etkin belgenin içerik