Aracılığıyla paylaş


Önbelleğe Almayı Görüntüle

Bir kapsayıcı uygulamasının, belge açıkken ancak nesnenin sunucu uygulaması çalışmadığında veya kullanıcının makinesine yüklenmediğinde kullanıcılar için görüntüleme veya yazdırma amacıyla bir nesnenin sunusunu alabilmesi gerekir. Ancak, bir belgede bulunabilecek tüm nesnelerin sunucularının her kullanıcının makinesine yüklendiğini ve her zaman isteğe bağlı olarak çalışabildiğini varsaymak gerçekçi değildir. Her zaman kullanılabilen varsayılan nesne işleyicisi, belgenin depolama alanında nesne sunularını önbelleğe alarak ve kapsayıcının belirli bir yüklemesinde nesne sunucusunun kullanılabilirliği ne olursa olsun bu sunuları herhangi bir platformda işleyerek bu ikilemi çözer.

Kapsayıcılar, nesnenin ekranda tutulması için gerekli olanın yanı sıra bir veya daha fazla hedef cihaz için çizim sunularını koruyabilir. Ayrıca, nesneyi bir platformdan diğerine taşımanız durumunda OLE, nesnenin veri biçimlerini otomatik olarak yeni platformda desteklenen biçimlere dönüştürür. Örneğin, bir nesneyi Windows'tan Macintosh'a taşırsanız, OLE meta dosyası sunularını PICT biçimlerine dönüştürür.

Ekli bir nesnenin doğru bir gösterimini kullanıcıya sunmak için, nesnenin kapsayıcı uygulaması nesne işleyicisi ile veri ve çizim yönergeleri isteyen bir iletişim kutusu başlatır. Kapsayıcının isteklerini yerine getirebilmek için işleyicinin IDataObject, IViewObject2ve IOleCache arabirimlerini uygulaması gerekir.

IDataObject, bir OLE kapsayıcı uygulamasının eklenmiş veya bağlı nesnelerinden veri almasına ve bu nesnelere veri göndermesine olanak tanır. Bir nesnedeki veriler değiştiğinde, bu arabirim nesnenin yeni verilerini kapsayıcısında kullanılabilir hale getirmesi için bir yol sağlar ve kapsayıcıya nesnenin kopyasındaki verileri güncelleştirmenin bir yolunu sağlar. (Genel olarak veri aktarımıyla ilgili bir tartışma için bkz. Bölüm 4, Veri Aktarımı.)

IViewObject2 arabirimi, IDataObject arabirimine çok benzer, ancak bir nesneden verilerini belleğe veya başka bir aktarım ortamına taşımak veya kopyalamak yerine kendisini ekran, yazıcı veya meta dosyası gibi bir cihaz bağlamında çizmesini ister. Arabirimin amacı, bir OLE kapsayıcısının ekli nesnelerinin alternatif resimsel gösterimlerini almasını sağlamaktır. Bu sayede, yalnızca yeni çizim yönergelerini almak için aynı veri nesnelerinin tamamen yeni örneklerini aktarmak zorunda kalma yükünü ortadan kaldırabilirsiniz. Bunun yerine, IViewObject2arabirimi, kapsayıcının belirttiği bir cihaz bağlamında bir nesnenin kendisinin resimsel bir temsilini sağlamasını talep eder.

IViewObject2 arabirimi çağrılırken, kapsayıcı uygulaması, nesnenin gerçekten işleneceği cihazdan farklı bir hedef cihaz üzerinde kendisini çizmesini de belirtebilir. Bu, kapsayıcının gerektiğinde tek bir nesneden farklı işlemeler oluşturmasını sağlar. Örneğin, sonuçta elde edilen çizim ekranda işlenecek olsa bile, çağıran kişi nesneden kendisini yazıcı için biçimlendirmesini isteyebilir. Sonuç elbette nesnenin baskı önizlemesi olacaktır.

IViewObject2arabirimi, kapsayıcıların görünüm değişikliği bildirimlerine kaydolmasını sağlayan yöntemler de sağlar. Veri ve OLE önerilerinde olduğu gibi, bir görünüm önerisi bağlantısı da kapsayıcının nesneden gelen bir çağrıya yanıt vermek yerine nesnenin işlemelerini kendi kolaylığında güncelleştirmesini sağlar. Örneğin, nesnenin sunucu uygulamasının yeni bir sürümü aynı verilerin ek görünümlerini sunacaksa, nesnenin varsayılan işleyicisi her kapsayıcının IAdviseSink::OnViewChange uygulamasını çağırarak yeni sunuların kullanılabilir olduğunu bildirir. Kapsayıcı bu bilgileri yalnızca gerektiğinde öneri havuzundan alır.

Windows cihaz bağlamları yalnızca tek bir işlem içinde anlam taşıdığından, IViewObject2işaretçilerini işlem sınırları boyuncageçiremezsiniz. Sonuç olarak, OLE yerel ve uzak sunucularının arabirimi uygulamak için herhangi bir ihtiyacı yoktur ve bu da olsa düzgün çalışmaz. Yalnızca nesne işleyicileri ve işlem içi sunucular IViewObject2arabirimini uygular. OLE, yalnızca OLE varsayılan işleyicisini toplayarak kendi OLE işlem içi sunucularınızda ve nesne işleyicilerinizde kullanabileceğiniz bir varsayılan uygulama sağlar. Alternatif olarak, IViewObject2için kendi uygulamanızı yazabilirsiniz.

Bir nesne, işleyiciye önbelleğe alması gereken özellikleri bildirmek için IOleCache arabirimini uygular. Nesne işleyicisi de önbelleğin sahibidir ve güncel tutulmasını sağlar. Katıştırılmış nesne çalışma durumuna girerken, işleyici sunucu nesnesi üzerinde uygun danışmanlık bağlantılarını ayarlar ve kendisi havuz görevi görür. IDataObject ve IViewObject2arabirim uygulamaları istemci tarafında önbelleğe alınan verilerin dışında çalışır. İşleyicinin IViewObject2uygulaması, istemci çizim isteklerini karşılamak için önbelleğe alınacak veri biçimlerini belirlemekten sorumludur. İşleyicinin IDataObject uygulaması, bellek ile temel IStorage katıştırılmış nesne örneği arasında çeşitli biçimlerde vb. veri almakla sorumludur. Özel işleyiciler, varsayılan işleyicide toplayarak bu uygulamaları kullanabilir.

Not

IViewObject2 arabirimi, IViewObject basit bir işlevsel uzantısıdır ve artık kullanılmayan ikinci arabirim yerine uygulanmalıdır. IViewObject yöntemlerini sağlamanın yanı sıra, IViewObject2 arabirimi, GetExtentadlı tek bir ek üye sağlar ve bu da kapsayıcı uygulamasının, nesneyi IOleObject çağrısıyla çalışan duruma taşımak zorunda kalmadan önbellekten nesnenin sunumunun boyutunu almasına olanak tanır: GetExtent.

 

Bileşik Belgeler