COleServerDoc, classe
Classe de base des documents serveur OLE.
Syntaxe
class AFX_NOVTABLE COleServerDoc : public COleLinkingDoc
Membres
Constructeurs publics
Nom | Description |
---|---|
COleServerDoc ::COleServerDoc | Construit un objet COleServerDoc . |
Méthodes publiques
Nom | Description |
---|---|
COleServerDoc ::ActivateDocObject | Active le document DocObject associé. |
COleServerDoc ::ActivateInPlace | Active le document pour la modification sur place. |
COleServerDoc ::D eactivateAndUndo | Désactive l’interface utilisateur du serveur. |
COleServerDoc ::D iscardUndoState | Ignore les informations d’annulation d’état. |
COleServerDoc ::GetClientSite | Récupère un pointeur vers l’interface sous-jacente IOleClientSite . |
COleServerDoc ::GetEmbeddedItem | Retourne un pointeur vers un élément représentant l’intégralité du document. |
COleServerDoc ::GetItemClipRect | Retourne le rectangle de découpage actuel pour la modification sur place. |
COleServerDoc ::GetItemPosition | Retourne le rectangle de position actuel, par rapport à la zone cliente de l’application conteneur, pour la modification sur place. |
COleServerDoc ::GetZoomFactor | Retourne le facteur de zoom en pixels. |
COleServerDoc ::IsDocObject | Détermine si le document est un DocObject. |
COleServerDoc ::IsEmbedded | Indique si le document est incorporé dans un document conteneur ou en cours d’exécution autonome. |
COleServerDoc ::IsInPlaceActive | Retourne TRUE si l’élément est actuellement activé en place. |
COleServerDoc ::NotifyChanged | Avertit les conteneurs que l’utilisateur a modifié le document. |
COleServerDoc ::NotifyClosed | Avertit les conteneurs que l’utilisateur a fermé le document. |
COleServerDoc ::NotifyRename | Avertit les conteneurs que l’utilisateur a renommé le document. |
COleServerDoc ::NotifySaved | Avertit les conteneurs que l’utilisateur a enregistré le document. |
COleServerDoc ::OnDeactivate | Appelé par l’infrastructure lorsque l’utilisateur désactive un élément activé en place. |
COleServerDoc ::OnDeactivateUI | Appelé par l’infrastructure pour détruire les contrôles et d’autres éléments d’interface utilisateur créés pour l’activation sur place. |
COleServerDoc ::OnDocWindowActivate | Appelé par l’infrastructure lorsque la fenêtre de trame de document du conteneur est activée ou désactivée. |
COleServerDoc ::OnResizeBorder | Appelé par l’infrastructure lorsque la fenêtre frame ou la fenêtre de document de l’application conteneur est redimensionnée. |
COleServerDoc ::OnShowControlBars | Appelé par l’infrastructure pour afficher ou masquer les barres de contrôle pour la modification sur place. |
COleServerDoc ::OnUpdateDocument | Appelé par l’infrastructure lorsqu’un document serveur qui est un élément incorporé est enregistré, mettant à jour la copie du conteneur de l’élément. |
COleServerDoc ::RequestPositionChange | Modifie la position du cadre d’édition sur place. |
COleServerDoc ::SaveEmbedding | Indique à l’application conteneur d’enregistrer le document. |
COleServerDoc ::ScrollContainerBy | Fait défiler le document conteneur. |
COleServerDoc ::UpdateAllItems | Avertit les conteneurs que l’utilisateur a modifié le document. |
Méthodes protégées
Nom | Description |
---|---|
COleServerDoc ::CreateInPlaceFrame | Appelé par l’infrastructure pour créer une fenêtre frame pour la modification sur place. |
COleServerDoc ::D estroyInPlaceFrame | Appelé par l’infrastructure pour détruire une fenêtre frame pour la modification sur place. |
COleServerDoc ::GetDocObjectServer | Remplacez cette fonction pour créer un CDocObjectServer objet et indiquez que ce document est un conteneur DocObject. |
COleServerDoc ::OnClose | Appelé par l’infrastructure lorsqu’un conteneur demande de fermer le document. |
COleServerDoc ::OnExecOleCmd | Exécute une commande spécifiée ou affiche de l’aide pour la commande. |
COleServerDoc ::OnFrameWindowActivate | Appelé par l’infrastructure lorsque la fenêtre frame du conteneur est activée ou désactivée. |
COleServerDoc ::OnGetEmbeddedItem | Appelé pour obtenir un COleServerItem qui représente l’intégralité du document ; utilisé pour obtenir un élément incorporé. Implémentation requise. |
COleServerDoc ::OnReactivateAndUndo | Appelé par l’infrastructure pour annuler les modifications apportées lors de la modification sur place. |
COleServerDoc ::OnSetHostNames | Appelé par l’infrastructure lorsqu’un conteneur définit le titre de la fenêtre pour un objet incorporé. |
COleServerDoc ::OnSetItemRects | Appelé par l’infrastructure pour positionner la fenêtre de frame d’édition sur place dans la fenêtre de l’application conteneur. |
COleServerDoc ::OnShowDocument | Appelé par l’infrastructure pour afficher ou masquer le document. |
Notes
Un document serveur peut contenir des objets COleServerItem , qui représentent l’interface du serveur à des éléments incorporés ou liés. Lorsqu’une application serveur est lancée par un conteneur pour modifier un élément incorporé, l’élément est chargé en tant que son propre document serveur ; l’objet COleServerDoc
contient un seul COleServerItem
objet, constitué de l’intégralité du document. Lorsqu’une application serveur est lancée par un conteneur pour modifier un élément lié, un document existant est chargé à partir du disque ; une partie du contenu du document est mise en surbrillance pour indiquer l’élément lié.
COleServerDoc
les objets peuvent également contenir des éléments de la classe COleClientItem . Cela vous permet de créer des applications conteneur-serveur. L’infrastructure fournit des fonctions pour stocker correctement les éléments lors de la COleClientItem
maintenance des COleServerItem
objets.
Si votre application serveur ne prend pas en charge les liens, un document serveur ne contient toujours qu’un seul élément de serveur, qui représente l’ensemble de l’objet incorporé sous forme de document. Si votre application serveur prend en charge les liens, elle doit créer un élément de serveur chaque fois qu’une sélection est copiée dans le Presse-papiers.
Pour utiliser COleServerDoc
, dérivez une classe de celui-ci et implémentez la fonction membre OnGetEmbeddedItem , ce qui permet à votre serveur de prendre en charge les éléments incorporés. Dérivez une classe de COleServerItem
pour implémenter les éléments de vos documents et renvoyer des objets de cette classe .OnGetEmbeddedItem
Pour prendre en charge les éléments liés, COleServerDoc
fournit la fonction membre OnGetLinkedItem . Vous pouvez utiliser l’implémentation par défaut ou la remplacer si vous avez votre propre moyen de gérer les éléments de document.
Vous avez besoin d’une COleServerDoc
classe dérivée pour chaque type de document serveur pris en charge par votre application. Par exemple, si votre application serveur prend en charge les feuilles de calcul et les graphiques, vous avez besoin de deux COleServerDoc
classes dérivées.
Pour plus d’informations sur les serveurs, consultez l’article Serveurs : Implémentation d’un serveur.
Hiérarchie d'héritage
COleServerDoc
Spécifications
En-tête : afxole.h
COleServerDoc ::ActivateDocObject
Active le document DocObject associé.
void ActivateDocObject();
Notes
Par défaut, COleServerDoc
ne prend pas en charge les documents actifs (également appelés DocObjects). Pour activer cette prise en charge, consultez GetDocObjectServer et la classe CDocObjectServer.
COleServerDoc ::ActivateInPlace
Active l’élément pour la modification sur place.
BOOL ActivateInPlace();
Valeur de retour
Différent de zéro s’il réussit ; sinon, 0, ce qui indique que l’élément est entièrement ouvert.
Notes
Cette fonction effectue toutes les opérations nécessaires à l’activation sur place. Il crée une fenêtre frame sur place, l’active et la dimensionne pour l’élément, configure des menus partagés et d’autres contrôles, fait défiler l’élément en mode affichage et définit le focus sur la fenêtre frame sur place.
Cette fonction est appelée par l’implémentation par défaut de COleServerItem ::OnShow. Appelez cette fonction si votre application prend en charge un autre verbe pour l’activation sur place (par exemple, Play).
COleServerDoc ::COleServerDoc
Construit un COleServerDoc
objet sans se connecter aux DLL système OLE.
COleServerDoc();
Notes
Vous devez appeler COleLinkingDoc ::Register pour ouvrir des communications avec OLE. Si vous utilisez COleTemplateServer dans votre application, COleLinkingDoc::Register
est appelé pour vous par COleLinkingDoc
l’implémentation de OnNewDocument
, OnOpenDocument
et OnSaveDocument
.
COleServerDoc ::CreateInPlaceFrame
L’infrastructure appelle cette fonction pour créer une fenêtre frame pour la modification sur place.
virtual COleIPFrameWnd* CreateInPlaceFrame(CWnd* pParentWnd);
Paramètres
pParentWnd
Pointeur vers la fenêtre parente de l’application conteneur.
Valeur de retour
Pointeur vers la fenêtre frame sur place, ou NULL en cas d’échec.
Notes
L’implémentation par défaut utilise des informations spécifiées dans le modèle de document pour créer le cadre. La vue utilisée est la première vue créée pour le document. Cette vue est temporairement détachée du cadre d’origine et attachée au cadre nouvellement créé.
Il s’agit d’un élément substituable avancé.
COleServerDoc ::D eactivateAndUndo
Appelez cette fonction si votre application prend en charge Annuler et que l’utilisateur choisit Annuler après l’activation d’un élément, mais avant de le modifier.
BOOL DeactivateAndUndo();
Valeur de retour
Différent de zéro en cas de réussite ; sinon, 0.
Notes
Si l’application conteneur est écrite à l’aide de la bibliothèque de classes Microsoft Foundation, l’appel de cette fonction entraîne l’appel de COleClientItem ::OnDeactivateAndUndo , ce qui désactive l’interface utilisateur du serveur.
COleServerDoc ::D estroyInPlaceFrame
L’infrastructure appelle cette fonction pour détruire une fenêtre frame sur place et renvoyer la fenêtre de document de l’application serveur à son état avant l’activation sur place.
virtual void DestroyInPlaceFrame(COleIPFrameWnd* pFrameWnd);
Paramètres
pFrameWnd
Pointeur vers la fenêtre frame sur place à détruire.
Notes
Il s’agit d’un élément substituable avancé.
COleServerDoc ::D iscardUndoState
Si l’utilisateur effectue une opération d’édition qui ne peut pas être annulée, appelez cette fonction pour forcer l’application conteneur à ignorer ses informations d’annulation.
BOOL DiscardUndoState();
Valeur de retour
Différent de zéro en cas de réussite ; sinon, 0.
Notes
Cette fonction est fournie afin que les serveurs qui prennent en charge Undo puissent libérer des ressources qui seraient autrement consommées par des informations d’état d’annulation qui ne peuvent pas être utilisées.
COleServerDoc ::GetClientSite
Récupère un pointeur vers l’interface sous-jacente IOleClientSite
.
LPOLECLIENTSITE GetClientSite() const;
Valeur de retour
Récupère un pointeur vers l’interface IOleClientSite sous-jacente.
COleServerDoc ::GetDocObjectServer
Remplacez cette fonction pour créer un CDocObjectServer
élément et renvoyer un pointeur vers celui-ci.
virtual CDocObjectServer* GetDocObjectServer(LPOLEDOCUMENTSITE pDocSite);
Paramètres
pDocSite
Pointeur vers l’interface IOleDocumentSite
qui connectera ce document au serveur.
Valeur de retour
Pointeur vers un CDocObjectServer
; NULL si l’opération a échoué.
Notes
Lorsqu’un serveur DocObject est activé, le retour d’un pointeur non NULL indique que le client peut prendre en charge DocObjects. L’implémentation par défaut retourne NULL.
Une implémentation classique pour un document qui prend en charge DocObjects alloue simplement un nouvel CDocObjectServer
objet et le retourne à l’appelant. Par exemple :
CDocObjectServer* CMFCOleServerDoc::GetDocObjectServer(LPOLEDOCUMENTSITE pSite)
{
return new CDocObjectServer(this, pSite);
}
COleServerDoc ::GetEmbeddedItem
Appelez cette fonction pour obtenir un pointeur vers un élément représentant l’intégralité du document.
COleServerItem* GetEmbeddedItem();
Valeur de retour
Pointeur vers un élément représentant l’intégralité du document ; NULL si l’opération a échoué.
Notes
Il appelle COleServerDoc ::OnGetEmbeddedItem, une fonction virtuelle sans implémentation par défaut.
COleServerDoc ::GetItemClipRect
Appelez la GetItemClipRect
fonction membre pour obtenir les coordonnées du rectangle de découpage de l’élément en cours de modification.
void GetItemClipRect(LPRECT lpClipRect) const;
Paramètres
lpClipRect
Pointeur vers une RECT
structure ou un CRect
objet pour recevoir les coordonnées du rectangle de découpage de l’élément.
Notes
Les coordonnées sont en pixels par rapport à la zone cliente de la fenêtre d’application conteneur.
Le dessin ne doit pas se produire en dehors du rectangle de découpage. En règle générale, le dessin est automatiquement restreint. Utilisez cette fonction pour déterminer si l’utilisateur a fait défiler la partie visible du document ; si c’est le cas, faites défiler le document conteneur selon les besoins au moyen d’un appel à ScrollContainerBy.
COleServerDoc ::GetItemPosition
Appelez la GetItemPosition
fonction membre pour obtenir les coordonnées de l’élément en cours de modification.
void GetItemPosition(LPRECT lpPosRect) const;
Paramètres
lpPosRect
Pointeur vers une RECT
structure ou un CRect
objet pour recevoir les coordonnées de l’élément.
Notes
Les coordonnées sont en pixels par rapport à la zone cliente de la fenêtre d’application conteneur.
La position de l’élément peut être comparée au rectangle de découpage actuel pour déterminer la mesure dans laquelle l’élément est visible (ou non visible) à l’écran.
COleServerDoc ::GetZoomFactor
La GetZoomFactor
fonction membre détermine le « facteur de zoom » d’un élément qui a été activé pour la modification sur place.
BOOL GetZoomFactor(
LPSIZE lpSizeNum = NULL,
LPSIZE lpSizeDenom = NULL,
LPCRECT lpPosRect = NULL) const;
Paramètres
lpSizeNum
Pointeur vers un objet de classe CSize
qui contiendra le numérateur du facteur de zoom. Sa valeur peut être NULL.
lpSizeDenom
Pointeur vers un objet de classe CSize
qui contiendra le dénominateur du facteur de zoom. Sa valeur peut être NULL.
lpPosRect
Pointeur vers un objet de classe CRect
qui décrit la nouvelle position de l’élément. Si cet argument est NULL, la fonction utilise la position actuelle de l’élément.
Valeur de retour
Différent de zéro si l’élément est activé pour la modification sur place et que son facteur de zoom est différent de 100 % (1:1) ; sinon 0.
Notes
Le facteur de zoom, en pixels, correspond à la proportion de la taille de l’élément dans son étendue actuelle. Si l’application conteneur n’a pas défini l’étendue de l’élément, son étendue naturelle (telle que déterminée par COleServerItem ::OnGetExtent) est utilisée.
La fonction définit ses deux premiers arguments sur le numérateur et le dénominateur du « facteur de zoom » de l’élément. Si l’élément n’est pas modifié en place, la fonction définit ces arguments sur une valeur par défaut de 100 % (ou 1:1) et retourne zéro. Pour plus d’informations, consultez la note technique 40, MFC/OLE en place redimensionnement et zoom.
COleServerDoc ::IsDocObject
Détermine si le document est un DocObject.
BOOL IsDocObject() const;
Valeur de retour
TRUE si le document est un DocObject ; sinon FALSE.
COleServerDoc ::IsEmbedded
Appelez la IsEmbedded
fonction membre pour déterminer si le document représente un objet incorporé dans un conteneur.
BOOL IsEmbedded() const;
Valeur de retour
Différent de zéro si l’objet COleServerDoc
est un document qui représente un objet incorporé dans un conteneur ; sinon, 0.
Notes
Un document chargé à partir d’un fichier n’est pas incorporé, même s’il peut être manipulé par une application conteneur en tant que lien. Un document incorporé dans un document conteneur est considéré comme incorporé.
COleServerDoc ::IsInPlaceActive
Appelez la IsInPlaceActive
fonction membre pour déterminer si l’élément est actuellement dans l’état actif sur place.
BOOL IsInPlaceActive() const;
Valeur de retour
Différent de zéro si l’objet COleServerDoc
est actif en place ; sinon 0.
COleServerDoc ::NotifyChanged
Appelez cette fonction pour notifier tous les éléments liés connectés au document que le document a changé.
void NotifyChanged();
Notes
En règle générale, vous appelez cette fonction une fois que l’utilisateur a modifié un attribut global tel que les dimensions du document serveur. Si un élément OLE est lié au document avec un lien automatique, l’élément est mis à jour pour refléter les modifications. Dans les applications conteneur écrites avec la bibliothèque de classes Microsoft Foundation, la fonction membre OnChange est COleClientItem
appelée.
Remarque
Cette fonction est incluse pour la compatibilité avec OLE 1. Les nouvelles applications doivent utiliser UpdateAllItems.
COleServerDoc ::NotifyClosed
Appelez cette fonction pour avertir le ou les conteneurs que le document a été fermé.
void NotifyClosed();
Notes
Lorsque l’utilisateur choisit la commande Fermer dans le menu Fichier, NotifyClosed
est appelée par COleServerDoc
l’implémentation de la fonction membre OnCloseDocument . Dans les applications conteneur écrites avec la bibliothèque de classes Microsoft Foundation, la fonction membre OnChange est COleClientItem
appelée.
COleServerDoc ::NotifyRename
Appelez cette fonction après que l’utilisateur renomme le document serveur.
void NotifyRename(LPCTSTR lpszNewName);
Paramètres
lpszNewName
Pointeur vers une chaîne spécifiant le nouveau nom du document serveur ; il s’agit généralement d’un chemin complet.
Notes
Lorsque l’utilisateur choisit la commande Enregistrer sous dans le menu Fichier, NotifyRename
est appelée par COleServerDoc
l’implémentation de la fonction membre OnSaveDocument . Cette fonction notifie les DLL système OLE, qui notifient à leur tour les conteneurs. Dans les applications conteneur écrites avec la bibliothèque de classes Microsoft Foundation, la fonction membre OnChange est COleClientItem
appelée.
COleServerDoc ::NotifySaved
Appelez cette fonction une fois que l’utilisateur a enregistré le document serveur.
void NotifySaved();
Notes
Lorsque l’utilisateur choisit la commande Enregistrer dans le menu Fichier, NotifySaved
il est appelé pour vous par COleServerDoc
l’implémentation d’OnSaveDocument. Cette fonction notifie les DLL système OLE, qui notifient à leur tour les conteneurs. Dans les applications conteneur écrites avec la bibliothèque de classes Microsoft Foundation, la fonction membre OnChange est COleClientItem
appelée.
COleServerDoc ::OnClose
Appelé par l’infrastructure lorsqu’un conteneur demande la fermeture du document serveur.
virtual void OnClose(OLECLOSE dwCloseOption);
Paramètres
dwCloseOption
Valeur de l’énumération OLECLOSE. Ce paramètre peut prendre l'une des valeurs suivantes :
OLECLOSE_SAVEIFDIRTY Le fichier est enregistré s’il a été modifié.
OLECLOSE_NOSAVE Le fichier est fermé sans être enregistré.
OLECLOSE_PROMPTSAVE Si le fichier a été modifié, l’utilisateur est invité à l’enregistrer.
Notes
Appels d’implémentation CDocument::OnCloseDocument
par défaut .
Pour plus d’informations et des valeurs supplémentaires, consultez OLECLOSE dans le Kit de développement logiciel (SDK) Windows.
COleServerDoc ::OnDeactivate
Appelé par l’infrastructure lorsque l’utilisateur désactive un élément incorporé ou lié actuellement actif.
virtual void OnDeactivate();
Notes
Cette fonction restaure l’interface utilisateur de l’application conteneur à son état d’origine et détruit tous les menus et autres contrôles créés pour l’activation sur place.
Les informations d’annulation de l’état doivent être libérées sans condition à ce stade.
Pour plus d’informations, consultez l’article Activation..
COleServerDoc ::OnDeactivateUI
Appelé lorsque l’utilisateur désactive un élément activé en place.
virtual void OnDeactivateUI(BOOL bUndoable);
Paramètres
bUndoable
Spécifie si les modifications de modification peuvent être annulées.
Notes
Cette fonction restaure l’interface utilisateur de l’application conteneur à son état d’origine, en masquant les menus et autres contrôles créés pour l’activation sur place.
L’infrastructure définit toujours bUndoable sur FALSE. Si le serveur prend en charge l’annulation et qu’une opération peut être annulée, appelez l’implémentation de classe de base avec bUndoable défini sur TRUE.
COleServerDoc ::OnDocWindowActivate
L’infrastructure appelle cette fonction pour activer ou désactiver une fenêtre de document pour la modification sur place.
virtual void OnDocWindowActivate(BOOL bActivate);
Paramètres
bActivate
Spécifie si la fenêtre de document doit être activée ou désactivée.
Notes
L’implémentation par défaut supprime ou ajoute les éléments d’interface utilisateur au niveau de l’image selon les besoins. Remplacez cette fonction si vous souhaitez effectuer des actions supplémentaires lorsque le document contenant votre élément est activé ou désactivé.
Pour plus d’informations, consultez l’article Activation..
COleServerDoc ::OnExecOleCmd
L’infrastructure appelle cette fonction pour exécuter une commande spécifiée ou afficher de l’aide pour la commande.
virtual HRESULT OnExecOleCmd(
const GUID* pguidCmdGroup,
DWORD nCmdID,
DWORD nCmdExecOpt,
VARIANTARG* pvarargIn,
VARIANTARG* pvarargOut);
Paramètres
pguidCmdGroup
Pointeur vers un GUID qui identifie un ensemble de commandes. Peut être NULL pour indiquer le groupe de commandes par défaut.
nCmdID
Commande à exécuter. Doit se trouver dans le groupe identifié par pguidCmdGroup.
nCmdExecOut
La façon dont l’objet doit exécuter la commande, une ou plusieurs des valeurs suivantes de l’énumération OLECMDEXECOPT :
OLECMDEXECOPT_DODEFAULT
OLECMDEXECOPT_PROMPTUSER
OLECMDEXECOPT_DONTPROMPTUSER
OLECMDEXECOPT_SHOWHELP
pvarargIn
Pointeur vers un VARIANTARG contenant des arguments d’entrée pour la commande. Sa valeur peut être NULL.
pvarargOut
Pointeur vers un VARIANTARG pour recevoir les valeurs de retour de sortie de la commande. Sa valeur peut être NULL.
Valeur de retour
Retourne S_OK en cas de réussite ; sinon, l’un des codes d’erreur suivants :
Valeur | Description |
---|---|
E_UNEXPECTED | Une erreur inattendue s’est produite |
E_FAIL | Une erreur s’est produite |
E_NOTIMPL | Indique que MFC lui-même doit tenter de traduire et de distribuer la commande |
OLECMDERR_E_UNKNOWNGROUP | pguidCmdGroup n’est pas NULL, mais ne spécifie pas de groupe de commandes reconnu |
OLECMDERR_E_NOTSUPPORTED | nCmdID n’est pas reconnu comme une commande valide dans le groupe pguidCmdGroup |
OLECMDERR_DISABLED | La commande identifiée par nCmdID est désactivée et ne peut pas être exécutée |
OLECMDERR_NOHELP | L’appelant a demandé de l’aide sur la commande identifiée par nCmdID , mais aucune aide n’est disponible |
OLECMDERR_CANCELED | L’utilisateur a annulé l’exécution |
Notes
COleCmdUI
peut être utilisé pour activer, mettre à jour et définir d’autres propriétés des commandes d’interface utilisateur DocObject. Une fois les commandes initialisées, vous pouvez les exécuter avec OnExecOleCmd
.
L’infrastructure appelle la fonction avant de tenter de traduire et de distribuer une commande de document OLE. Vous n’avez pas besoin de remplacer cette fonction pour gérer les commandes de document OLE standard, mais vous devez fournir un remplacement à cette fonction si vous souhaitez gérer vos propres commandes personnalisées ou gérer des commandes qui acceptent des paramètres ou retournent des résultats.
La plupart des commandes ne prennent pas d’arguments ou de valeurs de retour. Pour une majorité de commandes, l’appelant peut passer des valeurs NULL pour pvarargIn et pvarargOut. Pour les commandes qui attendent des valeurs d’entrée, l’appelant peut déclarer et initialiser une variable VARIANTARG et passer un pointeur à la variable dans pvarargIn. Pour les commandes qui nécessitent une valeur unique, l’argument peut être stocké directement dans variantARG et transmis à la fonction. Plusieurs arguments doivent être empaquetés dans variantARG à l’aide de l’un des types pris en charge (tels que IDispatch
SAFEARRAY).
De même, si une commande retourne des arguments, l’appelant est censé déclarer un VARIANTARG, l’initialiser à VT_EMPTY et passer son adresse dans pvarargOut. Si une commande retourne une valeur unique, l’objet peut stocker cette valeur directement dans pvarargOut. Plusieurs valeurs de sortie doivent être empaquetées d’une manière appropriée pour VARIANTARG.
L’implémentation de classe de base de cette fonction guide les structures OLE_COMMAND_MAP associées à la cible de commande et tente de distribuer la commande à un gestionnaire approprié. L’implémentation de classe de base fonctionne uniquement avec des commandes qui n’acceptent pas d’arguments ou de valeurs de retour. Si vous devez gérer des commandes qui acceptent des arguments ou des valeurs de retour, vous devez remplacer cette fonction et utiliser les paramètres pvarargIn et pvarargOut vous-même.
COleServerDoc ::OnFrameWindowActivate
L’infrastructure appelle cette fonction lorsque la fenêtre frame de l’application conteneur est activée ou désactivée.
virtual void OnFrameWindowActivate(BOOL bActivate);
Paramètres
bActivate
Spécifie si la fenêtre frame doit être activée ou désactivée.
Notes
L’implémentation par défaut annule tous les modes d’aide dans la fenêtre frame. Remplacez cette fonction si vous souhaitez effectuer un traitement spécial lorsque la fenêtre frame est activée ou désactivée.
Pour plus d’informations, consultez l’article Activation..
COleServerDoc ::OnGetEmbeddedItem
Appelé par l’infrastructure lorsqu’une application conteneur appelle l’application serveur pour créer ou modifier un élément incorporé.
virtual COleServerItem* OnGetEmbeddedItem() = 0;
Valeur de retour
Pointeur vers un élément représentant l’intégralité du document ; NULL si l’opération a échoué.
Notes
Il n'y a pas d'implémentation par défaut. Vous devez remplacer cette fonction pour retourner un élément qui représente l’intégralité du document. Cette valeur de retour doit être un objet d’une COleServerItem
classe dérivée de -.
COleServerDoc ::OnReactivateAndUndo
L’infrastructure appelle cette fonction lorsque l’utilisateur choisit d’annuler les modifications apportées à un élément qui a été activé en place, modifié et désactivé par la suite.
virtual BOOL OnReactivateAndUndo();
Valeur de retour
Valeur différente de zéro cas de réussite ; sinon, 0.
Notes
L’implémentation par défaut ne retourne rien à l’exception de la valeur FALSE pour indiquer l’échec.
Remplacez cette fonction si votre application prend en charge l’annulation. En règle générale, vous effectuez l’opération d’annulation, puis activez l’élément en appelant ActivateInPlace
. Si l’application conteneur est écrite avec la bibliothèque de classes Microsoft Foundation, l’appel entraîne l’appel COleClientItem::ReactivateAndUndo
de cette fonction.
COleServerDoc ::OnResizeBorder
L’infrastructure appelle cette fonction lorsque les fenêtres frame de l’application conteneur changent de taille.
virtual void OnResizeBorder(
LPCRECT lpRectBorder,
LPOLEINPLACEUIWINDOW lpUIWindow,
BOOL bFrame);
Paramètres
lpRectBorder
Pointeur vers une RECT
structure ou un CRect
objet qui spécifie les coordonnées de la bordure.
lpUIWindow
Pointeur vers un objet de classe IOleInPlaceUIWindow
propriétaire de la session d’édition en place actuelle.
bFrame
TRUE si lpUIWindow pointe vers la fenêtre frame de niveau supérieur de l’application conteneur, ou FALSE si lpUIWindow pointe vers la fenêtre frame au niveau du document de l’application conteneur.
Notes
Cette fonction redimensionne et ajuste les barres d’outils et d’autres éléments d’interface utilisateur conformément à la nouvelle taille de fenêtre.
Pour plus d’informations, consultez IOleInPlaceUIWindow dans le Kit de développement logiciel (SDK) Windows.
Il s’agit d’un élément substituable avancé.
COleServerDoc ::OnSetHostNames
Appelé par l’infrastructure lorsque le conteneur définit ou modifie les noms d’hôte pour ce document.
virtual void OnSetHostNames(
LPCTSTR lpszHost,
LPCTSTR lpszHostObj);
Paramètres
lpszHost
Pointeur vers une chaîne qui spécifie le nom de l’application conteneur.
lpszHostObj
Pointeur vers une chaîne qui spécifie le nom du conteneur pour le document.
Notes
L’implémentation par défaut modifie le titre du document pour toutes les vues faisant référence à ce document.
Remplacez cette fonction si votre application définit les titres via un autre mécanisme.
COleServerDoc::OnSetItemRects
L’infrastructure appelle cette fonction pour positionner la fenêtre de trame d’édition sur place dans la fenêtre frame de l’application conteneur.
virtual void OnSetItemRects(
LPCRECT lpPosRect,
LPCRECT lpClipRect);
Paramètres
lpPosRect
Pointeur vers une RECT
structure ou un CRect
objet qui spécifie la position de la fenêtre frame sur place par rapport à la zone cliente de l’application conteneur.
lpClipRect
Pointeur vers une RECT
structure ou un CRect
objet qui spécifie le rectangle de découpage de la fenêtre frame sur place par rapport à la zone cliente de l’application conteneur.
Notes
Remplacez cette fonction pour mettre à jour le facteur de zoom de la vue, si nécessaire.
Cette fonction est généralement appelée en réponse à un RequestPositionChange
appel, bien qu’elle puisse être appelée à tout moment par le conteneur pour demander une modification de position pour l’élément sur place.
COleServerDoc ::OnShowControlBars
L’infrastructure appelle cette fonction pour afficher ou masquer les barres de contrôle de l’application serveur associées à la fenêtre frame identifiée par pFrameWnd.
virtual void OnShowControlBars(
CFrameWnd* pFrameWnd,
BOOL bShow);
Paramètres
pFrameWnd
Pointeur vers la fenêtre frame dont les barres de contrôle doivent être masquées ou affichées.
bShow
Détermine si les barres de contrôle sont affichées ou masquées.
Notes
L’implémentation par défaut énumère toutes les barres de contrôle appartenant à cette fenêtre frame et les masque ou les affiche.
COleServerDoc ::OnShowDocument
L’infrastructure appelle la OnShowDocument
fonction lorsque le document serveur doit être masqué ou affiché.
virtual void OnShowDocument(BOOL bShow);
Paramètres
bShow
Spécifie si l’interface utilisateur du document doit être affichée ou masquée.
Notes
Si bShow a la valeur TRUE, l’implémentation par défaut active l’application serveur, si nécessaire, et provoque le défilement de la fenêtre de l’application conteneur afin que l’élément soit visible. Si bShow a la valeur FALSE, l’implémentation par défaut désactive l’élément par le biais d’un appel à OnDeactivate
, détruit ou masque toutes les fenêtres frame qui ont été créées pour le document, à l’exception du premier. Si aucun document visible n’est conservé, l’implémentation par défaut masque l’application serveur.
COleServerDoc ::OnUpdateDocument
Appelé par l’infrastructure lors de l’enregistrement d’un document incorporé dans un document composé.
virtual BOOL OnUpdateDocument();
Valeur de retour
Différent de zéro si le document a été correctement mis à jour ; sinon 0.
Notes
L’implémentation par défaut appelle les fonctions membres COleServerDoc ::NotifySaved et COleServerDoc ::SaveEmbedding , puis marque le document comme propre. Remplacez cette fonction si vous souhaitez effectuer un traitement spécial lors de la mise à jour d’un élément incorporé.
COleServerDoc ::RequestPositionChange
Appelez cette fonction membre pour que l’application conteneur modifie la position de l’élément.
void RequestPositionChange(LPCRECT lpPosRect);
Paramètres
lpPosRect
Pointeur vers une RECT
structure ou un CRect
objet contenant la nouvelle position de l’élément.
Notes
Cette fonction est généralement appelée (conjointement avec UpdateAllItems
) lorsque les données d’un élément actif sur place ont changé. Après cet appel, le conteneur peut ou ne pas effectuer la modification en appelant OnSetItemRects
. La position résultante peut être différente de celle demandée.
COleServerDoc ::SaveEmbedding
Appelez cette fonction pour indiquer à l’application conteneur d’enregistrer l’objet incorporé.
void SaveEmbedding();
Notes
Cette fonction est appelée automatiquement à partir de OnUpdateDocument
. Notez que cette fonction entraîne la mise à jour de l’élément sur le disque. Elle est donc généralement appelée uniquement à la suite d’une action utilisateur spécifique.
COleServerDoc ::ScrollContainerBy
Appelez la ScrollContainerBy
fonction membre pour faire défiler le document conteneur par la quantité, en pixels, indiquée par sizeScroll
.
BOOL ScrollContainerBy(CSize sizeScroll);
Paramètres
sizeScroll
Indique la distance jusqu’à laquelle le document conteneur doit faire défiler.
Valeur de retour
Valeur différente de zéro cas de réussite ; sinon, 0.
Notes
Les valeurs positives indiquent le défilement vers le bas et vers la droite ; les valeurs négatives indiquent le défilement vers le haut et vers la gauche.
COleServerDoc ::UpdateAllItems
Appelez cette fonction pour notifier tous les éléments liés connectés au document que le document a changé.
void UpdateAllItems(
COleServerItem* pSender,
LPARAM lHint = 0L,
CObject* pHint = NULL,
DVASPECT nDrawAspect = DVASPECT_CONTENT);
Paramètres
pSender
Pointeur vers l’élément qui a modifié le document ou NULL si tous les éléments doivent être mis à jour.
lHint
Contient des informations sur la modification.
pHint
Pointeur vers un objet stockant des informations sur la modification.
nDrawAspect
Détermine la façon dont l’élément doit être dessiné. Il s’agit d’une valeur de l’énumération DVASPECT. Ce paramètre peut prendre l'une des valeurs suivantes :
DVASPECT_CONTENT Élément est représenté de telle sorte qu’il puisse être affiché en tant qu’objet incorporé à l’intérieur de son conteneur.
DVASPECT_THUMBNAIL Élément est rendu dans une représentation « miniature » afin qu’il puisse être affiché dans un outil de navigation.
DVASPECT_ICON Élément est représenté par une icône.
DVASPECT_DOCPRINT Élément est représenté comme s’il était imprimé à l’aide de la commande Imprimer dans le menu Fichier.
Notes
Vous appelez généralement cette fonction une fois que l’utilisateur a modifié le document du serveur. Si un élément OLE est lié au document avec un lien automatique, l’élément est mis à jour pour refléter les modifications. Dans les applications conteneur écrites avec la bibliothèque de classes Microsoft Foundation, la fonction membre OnChange est COleClientItem
appelée.
Cette fonction appelle la OnUpdate
fonction membre pour chacun des éléments du document, à l’exception de l’élément d’envoi, en passant pHint, lHint et nDrawAspect. Utilisez ces paramètres pour transmettre des informations aux éléments relatifs aux modifications apportées au document. Vous pouvez encoder des informations à l’aide de lHint ou définir une CObject
classe dérivée pour stocker des informations sur les modifications et transmettre un objet de cette classe à l’aide de pHint. Remplacez la OnUpdate
fonction membre dans votre COleServerItem
classe dérivée pour optimiser la mise à jour de chaque élément selon que sa présentation a changé.
Voir aussi
Exemple MFC HIERSVR
COleLinkingDoc, classe
Graphique hiérarchique
COleDocument, classe
COleLinkingDoc, classe
COleTemplateServer, classe