Partager via


Serveurs : éléments du serveur

Lorsqu'un conteneur lance un serveur afin qu'un utilisateur puisse modifier OLE un élément incorporé ou lié, l'application serveur crée un « élément du serveur. » l'élément du serveur, qui est un objet d'une classe dérivée d' COleServerItem, fournit une interface entre le document serveur et l'application conteneur.

La classe d' COleServerItem définit plusieurs fonctions membres substituables qui sont appelées par OLE, habituellement en réponse à les demandes du conteneur.Les éléments du serveur peuvent représenter une partie du document serveur ou du document entier.Lorsqu'un élément OLE est incorporé dans le document conteneur, l'élément du serveur représente le document serveur complet.Lorsque l'élément OLE est lié, l'élément du serveur peut représenter une partie du document serveur ou le document entier, selon que le lien est à une partie ou au tout.

Dans l'exemple de HIERSVR , par exemple, la classe d'élément du serveur, CServerItem, un membre qui est un pointeur vers un objet de la classe CServerNode.L'objet de CServerNode est un nœud dans le document de l'application de HIERSVR, qui est une arborescence.Lorsque l'objet de CServerNode est le nœud racine, l'objet de CServerItem représente le document entier.Lorsque l'objet de CServerNode est un nœud enfant, l'objet de CServerItem représente une partie du document.Consultez l'exemple de liaison et incorporation d'objets MFC HIERSVR pour obtenir un exemple de cette interaction.

Implémenter des éléments du serveur

Si vous utilisez l'Assistant Application afin de produire du code « démarrage » pour votre application, vous devez faire pour inclure des éléments du serveur dans votre code de démarrage est de choisir une des options de serveur d'OLE page d'options.Si vous ajoutez des éléments du serveur à une application existante, exécutez les étapes suivantes :

Pour implémenter un élément du serveur

  1. Dériver une classe de COleServerItem.

  2. Dans votre classe dérivée, substituez la fonction membre d' OnDraw .

    L'infrastructure appelle OnDraw pour afficher l'élément OLE dans un métafichier.L'application conteneur utilise ce métafichier pour afficher l'élément.La classe d'affichage de votre application a également une fonction membre d' OnDraw , qui est utilisée pour afficher l'élément lorsque l'application serveur est actif.

  3. Implémentez une substitution d' OnGetEmbeddedItem pour votre classe de document serveur.Pour plus d'informations, consultez l'article serveurs : implémenter des documents serveurs et un exemple de liaison et incorporation d'objets MFC HIERSVR.

  4. Implémentez la fonction membre d' OnGetExtent de votre classe d'élément du serveur.L'infrastructure appelle cette fonction pour récupérer la taille de l'élément.L'implémentation par défaut n'exécute aucune opération.

Un conseil pour l'architecture de l'élément du serveur

Comme indiqué dans implémenter des éléments du serveur, les applications serveur doivent être en mesure de consulter des éléments à la fois dans la vue du serveur et dans un métafichier utilisé par l'application conteneur.Dans l'architecture de l'application de la bibliothèque MFC (Microsoft Foundation Class), la fonction membre d' OnDraw de la classe de vue affiche l'élément lorsqu'elle est modifiée (consultez CView::OnDraw dans la référence de la bibliothèque de classes).OnDraw de l'élément du serveur affiche l'élément dans un métafichier dans tous les autres cas (consultez COleServerItem::OnDraw).

Vous pouvez éviter la duplication du code en écrivant des fonctions d'assistance dans votre classe de document serveur et les appeler d' OnDraw s'exécute dans vos classes de vue et d'élément du serveur.l'exemple de liaison et incorporation d'objets MFC HIERSVR utilise cette stratégie : les fonctions CServerView::OnDraw et CServerItem::OnDraw les deux appellent CServerDoc::DrawTree pour afficher l'élément.

La vue et l'élément et ont des fonctions membres d' OnDraw car elles utilisent dans différentes conditions.La vue doit prendre en compte les facteurs tels que le zoom, taille et étendue de sélection, découpage, et éléments d'interface utilisateur tels que les barres de défilement.L'élément du serveur, en revanche, dessinez toujours l'objet OLE entier.

Pour plus d'informations, consultez CView::OnDraw, COleServerItem, COleServerItem::OnDraw, et le COleServerDoc::OnGetEmbeddedItem dans class library reference.

Voir aussi

Concepts

Serveurs