Menus et ressource : fusion de menus
Cet article détaille les étapes nécessaires aux applications de document OLE pour gérer correctement l’édition visuelle et l’activation sur place. L’activation sur place pose un défi pour les applications conteneur et serveur (composant). L’utilisateur reste dans la même fenêtre frame (dans le contexte du document conteneur), mais exécute en fait une autre application (le serveur). Cela nécessite une coordination entre les ressources des applications conteneur et serveur.
Les sujets traités dans cet article sont les suivants :
Dispositions du menu
La première étape consiste à coordonner les dispositions du menu. Les applications conteneur doivent créer un nouveau menu à utiliser uniquement lorsque les éléments incorporés sont activés en place. Au minimum, ce menu doit se composer des éléments suivants, dans l’ordre indiqué :
Menu Fichier identique à celui utilisé lors de l’ouverture des fichiers. (En général, aucun autre élément de menu n’est placé avant l’élément suivant.)
Deux séparateurs consécutifs.
Menu fenêtre identique à celui utilisé lorsque les fichiers sont ouverts (uniquement si l’application conteneur dans une application MDI). Certaines applications peuvent avoir d’autres menus, tels qu’un menu Options, qui appartiennent à ce groupe, qui reste dans le menu lorsqu’un élément incorporé est activé en place.
Remarque
Il peut y avoir d’autres menus qui affectent l’affichage du document conteneur, tels que Zoom. Ces menus de conteneur apparaissent entre les deux séparateurs de cette ressource de menu.
Les applications serveur (composant) doivent également créer un menu spécifiquement pour l’activation sur place. Il doit être semblable au menu utilisé lorsque les fichiers sont ouverts, mais sans éléments de menu, tels que Fichier et Fenêtre qui manipulent le document serveur au lieu des données. En règle générale, ce menu se compose des éléments suivants :
Modifiez le menu identique à celui utilisé lorsque les fichiers sont ouverts.
Séparateur.
Menus de modification d’objet, tels que le menu Stylet dans l’exemple d’application Scribble.
Séparateur.
Menu Aide.
Pour obtenir un exemple, examinez la disposition de certains exemples de menus sur place pour un conteneur et un serveur. Les détails de chaque élément de menu ont été supprimés pour rendre l’exemple plus clair. Le menu sur place du conteneur comporte les entrées suivantes :
IDR_CONTAINERTYPE_CNTR_IP MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&File C1"
MENUITEM SEPARATOR
POPUP "&Zoom C2"
MENUITEM SEPARATOR
POPUP "&Options C3"
POPUP "&Window C3"
END
Les séparateurs consécutifs indiquent où la première partie du menu du serveur doit aller. Examinez maintenant le menu sur place du serveur :
IDR_SERVERTYPE_SRVR_IP MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&Edit S1"
MENUITEM SEPARATOR
POPUP "&Format S2"
MENUITEM SEPARATOR
POPUP "&Help S3"
END
Les séparateurs ici indiquent où le deuxième groupe d’éléments de menu conteneur doit aller. La structure de menu résultante lorsqu’un objet de ce serveur est activé à l’intérieur de ce conteneur ressemble à ceci :
BEGIN
POPUP "&File C1"
POPUP "&Edit S1"
POPUP "&Zoom C2"
POPUP "&Format S2"
POPUP "&Options C3
POPUP "&Window C3"
POPUP "&Help S3"
END
Comme vous pouvez le voir, les séparateurs ont été remplacés par les différents groupes du menu de chaque application.
Les tables accélérateurs associées au menu sur place doivent également être fournies par l’application serveur. Le conteneur les incorporera dans ses propres tables accélérateurs.
Lorsqu’un élément incorporé est activé en place, l’infrastructure charge le menu sur place. Il demande ensuite à l’application serveur pour son menu d’activation sur place et l’insère là où se trouvent les séparateurs. C’est ainsi que les menus se combinent. Vous obtenez des menus à partir du conteneur pour fonctionner sur l’emplacement du fichier et de la fenêtre, et vous obtenez des menus du serveur pour fonctionner sur l’élément.
Barres d’outils et barres d’état
Les applications serveur doivent créer une nouvelle barre d’outils et stocker sa bitmap dans un fichier distinct. Les applications générées par l’Assistant application stockent cette bitmap dans un fichier appelé ITOOLBAR.BMP. La nouvelle barre d’outils remplace la barre d’outils de l’application conteneur lorsque l’élément de votre serveur est activé et doit contenir les mêmes éléments que votre barre d’outils normale, mais supprimez les icônes représentant des éléments dans les menus Fichier et Fenêtre.
Cette barre d’outils est chargée dans votre COleIPFrameWnd
classe dérivée, créée pour vous par l’Assistant Application. La barre d’état est gérée par l’application conteneur. Pour plus d’informations sur l’implémentation de fenêtres frame sur place, consultez Serveurs : Implémentation d’un serveur.