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:
Kapsayıcı 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 etkin bir belge kapsayıcısı:
Arabirim aracılığıyla nesne depolamayı
IPersistStorage
işleyebilme becerisine sahip olması, yani her etkin belgeye birIStorage
örnek sağlaması gerekir.ve
IAdviseSink
uygulayan "site" nesnelerini (belge başına bir nesne veya ekleme) zorunlu kılarak OLE belgelerininIOleClientSite
temel ekleme özelliklerini destekleyin.Katıştırılmış nesnelerin veya etkin belgelerin yerinde etkinleştirilmesini destekler. Kapsayıcının site nesneleri uygulamalı
IOleInPlaceSite
ve kapsayıcının çerçeve nesnesi sağlamalıdırIOleInPlaceFrame
.Kapsayıcının belgeyle konuşma mekanizmasını sağlamak için uygulayarak
IOleDocumentSite
etkin belgelerin uzantılarını destekleyin. İsteğe bağlı olarak kapsayıcı etkin belge arabirimleriniIOleCommandTarget
uygulayabilir veIContinueCallback
yazdırma veya kaydetme gibi basit komutları alabilir.
Çerçeve nesnesi, görünüm nesneleri ve kapsayıcı nesnesi, Komut Hedefleri'nde açıklandığı gibi belirli komutların gönderilmesini desteklemek için isteğe bağlı olarak uygulanabilirIOleCommandTarget
. Görünüm ve kapsayıcı nesneleri, Programlı Yazdırma'da açıklandığı gibi programlı yazdırmayı desteklemek için isteğe bağlı olarak ve IContinueCallback
uygulayabilirIPrint
.
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 gerekenler kalın arabirimlerdir; kalın ve italik olanlar isteğe bağlıdır. Diğer tüm arabirimler gereklidir.
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ıdır ve arabirimi eklenir IOleDocument
:
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. Bir görünüm sitesi, standart IOleInPlaceSite
arabirimi desteklemenin yanı sıra genellikle programlı yazdırma denetimi için de uygulanır IContinueCallback
. (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, aracılığıyla IOleInPlaceSite
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 nesnesinin aracılığıyla bu çerçeve nesnesine IOleInPlaceSite::GetWindowContext
erişimi vardır. Bu, kapsayıcı belgesini temsil eden kapsayıcı nesnesine de erişim sağlar (bölme düzeyinde araç çubuğu anlaşması ve kapsanan nesne numaralandırmasını işleyebilir).
Etkin bir belge kapsayıcısı, ekleyerek IOleCommandTarget
çerçeveyi genişletebilir. Bu, etkin belgenin kullanıcı arabiriminden kaynaklanan komutları, bu arabirimin bir kapsayıcının aynı komutları (Dosya Yeni, Aç, Farklı Kaydet, Yazdır gibi) göndermesine izin verdiği şekilde almasını sağlar. Kopyalama, Yapıştırma, Geri Alma ve diğerlerini) etkin bir belgeye düzenleyin. Daha fazla bilgi için bkz . Komut Hedefleri.