Sunucular: Sunucu Öğeleri
Bir kapsayıcı, kullanıcının katıştırılmış veya bağlı ole öğesini düzenleyebilmesi için bir sunucu başlattığında, sunucu uygulaması bir "sunucu öğesi" oluşturur. öğesinden COleServerItem
türetilen bir sınıfın nesnesi olan sunucu öğesi, sunucu belgesi ile kapsayıcı uygulaması arasında bir arabirim sağlar.
COleServerItem
sınıfı, genellikle kapsayıcıdan gelen isteklere yanıt olarak OLE tarafından çağrılan birkaç geçersiz kılınabilir üye işlevi tanımlar. Sunucu öğeleri sunucu belgesinin bir bölümünü veya belgenin tamamını temsil edebilir. Kapsayıcı belgesine bir OLE öğesi eklendiğinde, sunucu öğesi sunucu belgesinin tamamını temsil eder. OLE öğesi bağlandığında, bağlantının bir parçaya mı yoksa bütüne mi bağlı olduğuna bağlı olarak, sunucu öğesi sunucu belgesinin bir bölümünü veya belgenin tamamını temsil edebilir.
HIERSVR örneğinde, örneğin, sunucu öğesi sınıfı, CServerItem
sınıfının bir nesnesine işaretçi olan bir üyeye CServerNode
sahiptir. CServerNode
nesnesi, HIERSVR uygulamasının belgesindeki ağaç olan bir düğümdür. CServerNode
Nesne kök düğüm olduğunda, CServerItem
nesne belgenin tamamını temsil eder. CServerNode
Nesne bir alt düğüm olduğunda, CServerItem
nesne belgenin bir bölümünü temsil eder. Bu etkileşimin bir örneği için bkz. MFC OLE örneği HIERSVR .
Sunucu Öğelerini Uygulama
Uygulama sihirbazını kullanarak uygulamanız için "starter" kodu oluşturursanız, başlangıç kodunuzdaki sunucu öğelerini eklemek için yapmanız gereken tek şey OLE Seçenekleri sayfasından sunucu seçeneklerinden birini seçmektir. Mevcut bir uygulamaya sunucu öğeleri ekliyorsanız aşağıdaki adımları gerçekleştirin:
Sunucu öğesi uygulamak için
sınıfından bir sınıf türetme
COleServerItem
.Türetilmiş sınıfınızda üye işlevini geçersiz kılın
OnDraw
.Çerçeve, OLE öğesini bir meta dosyada işlemek için çağırır
OnDraw
. Kapsayıcı uygulaması bu meta dosyasını kullanarak öğeyi işler. Uygulamanızın görünüm sınıfı, sunucu uygulaması etkin olduğunda öğeyi işlemek için kullanılan birOnDraw
üye işlevine de sahiptir.sunucu-belge sınıfınız için geçersiz kılma
OnGetEmbeddedItem
uygulayın. Daha fazla bilgi için Sunucular: Sunucu Belgelerini Uygulama ve MFC OLE örneği HIERSVR makalesine bakın.Sunucu öğesi sınıfınızın
OnGetExtent
üye işlevini uygulayın. Çerçeve, öğenin boyutunu almak için bu işlevi çağırır. Varsayılan uygulama hiçbir şey yapmaz.
Sunucu Öğesi Mimarisi için İpucu
Sunucu Öğelerini Uygulama bölümünde belirtildiği gibi, sunucu uygulamalarının hem sunucu görünümünde hem de kapsayıcı uygulaması tarafından kullanılan bir meta dosyasında öğeleri işleyebilmesi gerekir. Microsoft Foundation Sınıf Kitaplığı'nın uygulama mimarisinde, görünüm sınıfının OnDraw
üye işlevi öğe düzenlenirken işlenir (bkz. Sınıf Kitaplığı Başvurusu'nda CView::OnDraw). Sunucu öğesi diğer OnDraw
tüm durumlarda öğeyi bir meta dosyası olarak işler (bkz . COleServerItem::OnDraw).
Sunucu-belge sınıfınıza yardımcı işlevler yazarak ve bunları görünüm ve sunucu öğesi sınıflarındaki işlevlerden çağırarak kodun OnDraw
çoğaltılmasını önleyebilirsiniz. MFC OLE örneği HIERSVR şu stratejiyi kullanır: öğeyi işlemek için işlevler CServerView::OnDraw
ve CServerItem::OnDraw
her ikisi de çağrısı CServerDoc::DrawTree
.
Görünümün ve öğenin her ikisi de farklı koşullar altında çizim yaptıkları için üye işlevlerine sahiptir OnDraw
. Görünümün yakınlaştırma, seçim boyutu ve kapsamı, kırpma ve kaydırma çubukları gibi kullanıcı arabirimi öğeleri gibi faktörleri hesaba katması gerekir. Öte yandan, sunucu öğesi her zaman OLE nesnesinin tamamını çizer.
Daha fazla bilgi için, Sınıf Kitaplığı Başvurusu'ndaki CView::OnDraw, COleServerItem, COleServerItem::OnDraw ve COleServerDoc::OnGetEmbeddedItem bölümüne bakın.