Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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. Aktif belge, OLE belgelerinin her zamanki ekleme ve yerinde etkinleştirme arabirimlerini desteklemenin yanı sıra, IOleDocument aracılığıyla gö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örtgenleri destekleyip desteklemediği gibi çeşitli bilgileri de sunabilir.
Aşağıdaki IOleDocument arabirimidir. 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. Etkin belge, etkin bir belge kapsayıcısına 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 (örneğin, Office uygulamalarında Pencere menüsündeki Yeni Pencere öğesi) birden çok görünümü desteklemek isteyebilirsiniz.
Etkin Belgeler için Gereksinimler
Etkin bir belge kapsayıcısında görüntülenebilen etkin bir belgenin şu gereklilikleri karşılaması gerekir:
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,
IPersistFile,IOleObjectveIDataObjectarayüzlerini zorunlu kılmaktadır.Her biri yerinde etkinleştirme yapabilen bir veya daha fazla görünümü destekleyin. Başka bir ifadeyle, görünümlerin,
IOleDocumentViewarabirimi ile birlikteIOleInPlaceObjectveIOleInPlaceActiveObjectarabirimlerini (kapsayıcınınIOleInPlaceSiteveIOleInPlaceFramearabirimlerini kullanarak) desteklemesi gerekir.Destek standart etkin belge arabirimlerini
IOleDocument,IOleCommandTargetveIPrint.
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, bir görünüm bileşeni IOleInPlaceObject ve IOleInPlaceActiveObject'e ek olarak IOleDocumentView'yi desteklemelidir.
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, bu işlevselliği standart IOleInPlaceSite arabirimi aracılığıyla da 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 IPrint ve IContinueCallback yazdırma arabirimlerini uygulamalıdır. Yazdırma başladığında, görünüm çerçevesi, üstbilgiler, altbilgiler, kenar boşlukları ve ilgili öğelerin doğru şekilde yazdırılması için IPrint üzerinden görüntü sağlayıcıyla anlaşma yapmalıdır. Görünüm sağlayıcısı, yazdırmayla ilgili olayları çerçeveye IContinueCallback aracılığıyla bildirir. 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.