Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Lorsqu’un conteneur lance un serveur afin qu’un utilisateur puisse modifier un élément OLE incorporé ou lié, l’application serveur crée un « élément serveur ». L’élément de serveur, qui est un objet d’une classe dérivée COleServerItemde , fournit une interface entre le document serveur et l’application conteneur.
La COleServerItem classe définit plusieurs fonctions membres substituables appelées par OLE, généralement en réponse aux demandes du conteneur. Les éléments serveur peuvent représenter une partie du document serveur ou l’intégralité du document. Lorsqu’un élément OLE est incorporé dans le document conteneur, l’élément serveur représente l’intégralité du document serveur. Lorsque l’élément OLE est lié, l’élément serveur peut représenter une partie du document serveur ou du document entier, selon que le lien est vers une partie ou dans l’ensemble.
Dans l’exemple HIERSVR , par exemple, la classe d’élément de serveur, CServerItema un membre qui est un pointeur vers un objet de la classe CServerNode. L’objet CServerNode est un nœud dans le document de l’application HIERSVR, qui est une arborescence. Lorsque l’objet CServerNode est le nœud racine, l’objet CServerItem représente l’ensemble du document. Lorsque l’objet CServerNode est un nœud enfant, l’objet CServerItem représente une partie du document. Consultez l’exemple OLE MFC OLE HIERSVR pour obtenir un exemple de cette interaction.
Implémentation d’éléments de serveur
Si vous utilisez l’Assistant Application pour produire du code « starter » pour votre application, il vous suffit d’inclure des éléments de serveur dans votre code de démarrage pour choisir l’une des options de serveur dans la page Options OLE. Si vous ajoutez des éléments serveur à une application existante, procédez comme suit :
Pour implémenter un élément de serveur
Dériver une classe de
COleServerItem.Dans votre classe dérivée, remplacez la
OnDrawfonction membre.L’infrastructure appelle
OnDrawpour 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 uneOnDrawfonction membre, qui est utilisée pour afficher l’élément lorsque l’application serveur est active.Implémentez un remplacement de
OnGetEmbeddedItemvotre classe de document serveur. Pour plus d’informations, consultez l’article Serveurs : implémentation de documents serveur et de l’exemple OLE MFC OLE HIERSVR.Implémentez la fonction membre de
OnGetExtentvotre classe serveur-élément. 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.
Conseil pour l’architecture de Server-Item
Comme indiqué dans Implémentation d’éléments de serveur, les applications serveur doivent être en mesure de restituer des éléments à la fois dans la vue du serveur et dans un métafichier utilisé par l’application conteneur. Dans l’architecture d’application de la bibliothèque de classes Microsoft Foundation, la fonction membre de OnDraw la classe d’affichage affiche l’élément lorsqu’il est modifié (voir CView ::OnDraw dans la référence de la bibliothèque de classes). L’élément de serveur affiche l’élément OnDraw dans un métafichier dans tous les autres cas (voir COleServerItem ::OnDraw).
Vous pouvez éviter la duplication du code en écrivant des fonctions d’assistance dans votre classe de document serveur et en les appelant à partir des OnDraw fonctions dans vos classes d’affichage et d’élément serveur. L’exemple OLE MFC OLE HIERSVR utilise cette stratégie : les fonctions CServerView::OnDraw et CServerItem::OnDraw les deux appels CServerDoc::DrawTree pour restituer l’élément.
L’affichage et l’élément ont OnDraw tous deux des fonctions membres, car ils dessinent dans des conditions différentes. La vue doit prendre en compte des facteurs tels que le zoom, la taille de sélection et l’étendue, la capture et les éléments d’interface utilisateur tels que les barres de défilement. L’élément de serveur, d’autre part, dessine toujours l’objet OLE entier.
Pour plus d’informations, consultez CView ::OnDraw, COleServerItem, COleServerItem ::OnDraw et COleServerDoc ::OnGetEmbeddedItem dans la référence de la bibliothèque de classes.