Aracılığıyla paylaş


Kapsayıcılar: Gelişmiş Özellikler

Uyarı

Microsoft Foundation Sınıfları (MFC) kitaplığı desteklenmeye devam ediyor. Ancak artık özellik eklemeyeceğiz veya belgeleri güncelleştirmeyeceğiz.

Bu makalede, isteğe bağlı gelişmiş özellikleri mevcut kapsayıcı uygulamalarına eklemek için gereken adımlar açıklanmaktadır. Bu özellikler şunlardır:

Kapsayıcı/Sunucu Uygulaması Oluşturma

Kapsayıcı/sunucu uygulaması, hem kapsayıcı hem de sunucu işlevi gören bir uygulamadır. Windows için Microsoft Word buna bir örnektir. Windows için Word belgelerini diğer uygulamalara ekleyebilir ve windows için Word belgelerine de öğe ekleyebilirsiniz. Kapsayıcı uygulamanızı hem kapsayıcı hem de tam sunucu olacak şekilde değiştirme işlemi (karma bir kapsayıcı/mini sunucu uygulaması oluşturamazsınız) tam sunucu oluşturma işlemine benzer.

Sunucular: Sunucu Uygulama makalesi, bir sunucu uygulamasını uygulamak için gereken birkaç görevi listeler. Kapsayıcı uygulamasını bir kapsayıcı/sunucu uygulamasına dönüştürürseniz, kapsayıcıya kod ekleyerek bu görevlerin bazılarını gerçekleştirmeniz gerekir. Aşağıda dikkate alınması gereken önemli şeyler listelenir:

  • Uygulama sihirbazı tarafından oluşturulan kapsayıcı kodu OLE alt sistemini zaten başlatır. Bu destek için herhangi bir şeyi değiştirmeniz veya eklemeniz gerekmez.

  • Temel sınıfı COleDocument olan her belge sınıfında, bu temel sınıfı COleServerDoc ile değiştirin.

  • Sunucu yerinde düzenlemek için kullanılırken öğelerin yerinde düzenlenmesini önlemek için geçersiz kılın COleClientItem::CanActivate .

    Örneğin, MFC OLE örneği OCLIENT kapsayıcı/sunucu uygulamanız tarafından oluşturulan bir öğeyi katıştırmıştır. OCLIENT uygulamasını açar ve kapsayıcı/sunucu uygulamanız tarafından oluşturulan öğeyi yerinde düzenlersiniz. Uygulamanızın öğesini düzenlerken, MFC OLE örneği HIERSVR tarafından oluşturulan bir öğeyi eklemek istediğinize karar verirsiniz. Bunu yapmak için yerinde etkinleştirme kullanamazsınız. Bu öğeyi etkinleştirmek için HIERSVR'ı tamamen açmanız gerekir. Microsoft Foundation Sınıf Kitaplığı bu OLE özelliğini desteklemediğinden, COleClientItem::CanActivate öğesini geçersiz kılmak bu durumu kontrol etmenize ve uygulamanızda olası bir çalışma zamanı hatasını önlemenize olanak tanır.

Yeni bir uygulama oluşturuyorsanız ve kapsayıcı/sunucu uygulaması olarak çalışmasını istiyorsanız, uygulama sihirbazındaki OLE Seçenekleri iletişim kutusunda bu seçeneği belirleyin; bu destek otomatik olarak oluşturulur. Daha fazla bilgi için Genel Bakış: ActiveX Denetim Kapsayıcısı Oluşturma makalesine bakın. MFC örnekleri hakkında bilgi için bkz. MFC Örnekleri.

Bir MDI uygulamasını kendi içine ekleyemeyeceğinizi unutmayın. Kapsayıcı/sunucu olan bir uygulama, bir SDI uygulaması olmadığı sürece kendisine eklenemez.

Katıştırılmış Nesnelere Bağlantılar özelliği, kullanıcının kapsayıcı uygulamanızın içindeki katıştırılmış bir nesneye OLE bağlantısı olan bir belge oluşturmasına olanak tanır. Örneğin, eklenmiş bir elektronik tablo içeren bir sözcük işlemcisinde belge oluşturun. Uygulamanız eklenmiş nesnelere bağlantıları destekliyorsa, sözcük işlemcisinin belgesinde yer alan elektronik tabloya bir bağlantı yapıştırabilir. Bu özellik, uygulamanızın elektronik tabloda yer alan bilgileri, sözcük işlemcisinin ilk olarak nereden aldığını bilmeden kullanmasını sağlar.

  1. Belge sınıfınızı COleLinkingDoc yerine COleDocument öğesinden türetin.

  2. OLE Geliştirme Araçları'na dahil edilen Sınıf Kimliği Oluşturucusunu kullanarak uygulamanız için bir OLE sınıf kimliği (CLSID) oluşturun.

  3. Uygulamayı OLE'ye kaydedin.

  4. Uygulama sınıfınızın üyesi olarak bir COleTemplateServer nesne oluşturun.

  5. Uygulama sınıfınızın InitInstance üye işlevinde aşağıdakileri yapın:

    • Nesnenin COleTemplateServer üye işlevini çağırarak nesnenizi ConnectTemplate belge şablonlarınıza bağlayın.

    • COleTemplateServer::RegisterAll Tüm sınıf nesnelerini OLE sistemine kaydetmek için üye işlevini çağırın.

    • COleTemplateServer::UpdateRegistry'ı arayın. Uygulama "/Embedded" anahtarıyla başlatılmamışsa tek parametresi UpdateRegistryOAT_CONTAINER olmalıdır. Bu, uygulamayı ekli nesnelere yönelik bağlantıları destekleyebilecek bir kapsayıcı olarak kaydeder.

      Uygulama "/Embedded" anahtarıyla başlatılırsa, sunucu uygulamasına benzer şekilde ana penceresini göstermemelidir.

MFC OLE örneği OCLIENT bu özelliği uygular. Bunun nasıl yapıldığını gösteren bir örnek için bu örnek uygulamanın InitInstance dosyasındaki fonksiyonuna bakın.

Ayrıca bakınız

Konteynerler
Sunucu