Aracılığıyla paylaş


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 COleServerItemtü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ı, CServerItemsınıfının bir nesnesine işaretçi olan bir üyeye CServerNodesahiptir. 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

  1. sınıfından bir sınıf türetme COleServerItem.

  2. 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 bir OnDraw üye işlevine de sahiptir.

  3. 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.

  4. 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.

Ayrıca bkz.

Sunucular