Aracılığıyla paylaş


Etkin Belge Kapsayıcıları

Microsoft Office Ciltçisi veya Internet Explorer gibi etkin bir belge kapsayıcısı, tek bir çerçeve içinde (her belge türü için birden çok uygulama çerçevesi oluşturmaya ve kullanmaya zorlamak yerine) farklı uygulama türlerinde birkaç belgeyle çalışmanıza olanak tanır.

MFC, sınıfındaki COleDocObjectItem etkin belge kapsayıcıları için tam destek sağlar. MFC Uygulama Sihirbazı'nı kullanarak, MFC Uygulama Sihirbazı'nın Bileşik Belge Desteği sayfasında Etkin belge kapsayıcısı onay kutusunu seçerek etkin bir belge kapsayıcısı oluşturabilirsiniz. Daha fazla bilgi için bkz. Etkin Belge Kapsayıcı Uygulaması Oluşturma.

Etkin belge kapsayıcıları hakkında daha fazla bilgi için bkz:

Konteyner Gereksinimleri

Etkin belge kapsayıcısında etkin belge desteği yalnızca arabirim uygulamalarından fazlasını ifade eder: ayrıca, kapsanan bir nesnenin arabirimlerini kullanma bilgisi de gerektirir. Aynı durum, kapsayıcının etkin belgelerde bu uzantı arabirimlerinin nasıl kullanılacağını da bilmesi gereken etkin belge uzantıları için de geçerlidir.

Etkin belgeleri tümleştiren bir belge kapsayıcısı şunları içermelidir:

  • Arabirim aracılığıyla nesne depolamayı IPersistStorage işleyebilme becerisine sahip olması, yani her etkin belgeye bir IStorage örnek sağlaması gerekir.

  • OLE belgelerinin temel ekleme özelliklerini destekleyin, belge veya ekleme başına bir nesne olacak şekilde IOleClientSite ve IAdviseSink uygulayan "site" nesnelerinin gerekli olmasını sağlayarak.

  • Katıştırılmış nesnelerin veya etkin belgelerin yerinde etkinleştirilmesini destekler. Kapsayıcının site nesneleri IOleInPlaceSite'yi uygulamalı ve kapsayıcının çerçeve nesnesi IOleInPlaceFrame'yi sağlamalıdır.

  • IOleDocumentSite kullanarak kapsayıcıyı belgeyle konuşabilecek bir mekanizmayı sağlayarak etkin belgelerin uzantılarını destekleyin. İsteğe bağlı olarak kapsayıcı etkin belge arabirimlerini IOleCommandTarget uygulayabilir ve IContinueCallback yazdırma veya kaydetme gibi basit komutları alabilir.

Çerçeve nesnesi, görünüm nesneleri ve kapsayıcı nesnesi, IOleCommandTarget açıklandığı gibi belirli komutların gönderilmesini desteklemek için isteğe bağlı olarak uygulanabilir. Görünüm ve kapsayıcı nesneleri, IPrint ve IContinueCallback isteğe bağlı olarak uygulayarak, Programlı Yazdırma'da açıklandığı gibi programlı yazdırmayı destekleyebilir.

Aşağıdaki şekilde, kapsayıcı ile bileşenleri (solda) ve etkin belge ile görünümleri (sağda) arasındaki kavramsal ilişkiler gösterilmektedir. Etkin belge depolamayı ve verileri yönetir ve görünüm bu verileri görüntüler veya isteğe bağlı olarak yazdırır. Etkin belge katılımı için gereken arayüzler kalın yazılmış olanlardır; kalın ve italik olanlar isteğe bağlıdır. Diğer tüm arabirimler gereklidir.

Etkin belge kapsayıcısı arabirimleri.

Yalnızca tek bir görünümü destekleyen bir belge, tek bir somut sınıfa hem görünüm hem de belge bileşenlerini (karşılık gelen arabirimleri) uygulayabilir. Ayrıca, bir kerede yalnızca bir görünümü destekleyen bir kapsayıcı sitesi, belge sitesini ve görünüm sitesini tek bir somut site sınıfında birleştirebilir. Ancak kapsayıcının çerçeve nesnesi ayrı kalmalıdır ve kapsayıcının belge bileşeni yalnızca mimarinin tam bir resmini vermek için buraya eklenmiştir; etkin belge kapsama mimarisinden etkilenmez.

Belge Sitesi Nesneleri

Etkin belge kapsama mimarisinde, bir belge sitesi OLE Belgeleri'ndeki istemci site nesnesiyle aynı olup, buna ek olarak IOleDocument arabirimi eklenmiştir.

interface IOleDocumentSite : IUnknown
{
    HRESULT ActivateMe(IOleDocumentView *pViewToActivate);
}

Belge sitesi kavramsal olarak bir veya daha fazla "siteyi görüntüle" nesnesinin kapsayıcısıdır. Her görünüm sitesi nesnesi, belge sitesi tarafından yönetilen belgenin tek tek görünüm nesneleriyle ilişkilendirilir. Kapsayıcı, belge sitesi başına yalnızca tek bir görünümü destekliyorsa, belge sitesini ve görünüm sitesini tek bir somut sınıfla uygulayabilir.

Site Nesnelerini Görüntüle

Kapsayıcının görünüm sitesi nesnesi, belgenin belirli bir görünümü için görüntüleme alanını yönetir. Görüntüleme sitesi, standart IOleInPlaceSite arabiriminin desteklenmesinin yanı sıra, genellikle programlı yazdırma kontrolü için IContinueCallback'i de uygular. (Görünüm nesnesinin hiçbir zaman sorgu IContinueCallback oluşturmadığını, bu nedenle kapsayıcının istediği herhangi bir nesneye uygulanabileceğini unutmayın.)

Birden çok görünümü destekleyen bir kapsayıcı, belge sitesi içinde birden çok görünüm sitesi nesnesi oluşturabilmelidir. Bu, IOleInPlaceSite aracılığıyla sağlanan her görünüme ayrı etkinleştirme ve devre dışı bırakma hizmetleri sağlar.

Çerçeve Nesnesi

Kapsayıcının çerçeve nesnesi, çoğunlukla OLE Belgelerinde yerinde etkinleştirme için kullanılan çerçevedir, yani menü ve araç çubuğu anlaşmalarını işleyen çerçevedir. Görünüm nesnesi, IOleInPlaceSite::GetWindowContext aracılığıyla, çerçeve nesnesine erişebilir ve ayrıca bölme düzeyinde araç çubuğu anlaşmasını ve kapsanan nesne numaralandırmasını işleyebilen kapsayıcı belgesini temsil eden kapsayıcı nesnesine de erişim sağlar.

Etkin bir belge kapsayıcısı, IOleCommandTarget ekleyerek çerçeveyi geliştirebilir. Bu, etkin belgenin kullanıcı arabiriminden kaynaklanan komutları, tıpkı bu arabirimin bir kapsayıcının aynı komutları (Dosya Yeni, , Farklı Kaydet, Yazdır; Düzen Kopyala, Yapıştır, Geri Al ve diğerleri) etkin bir belgeye göndermesine izin verdiği şekilde almasını sağlar. Daha fazla bilgi için bkz. Komut Hedefleri.

Ayrıca bakınız

Etkin Belge Sınırlama