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é :

  1. 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.)

  2. Deux séparateurs consécutifs.

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

  1. Modifiez le menu identique à celui utilisé lorsque les fichiers sont ouverts.

  2. Séparateur.

  3. Menus de modification d’objet, tels que le menu Stylet dans l’exemple d’application Scribble.

  4. Séparateur.

  5. 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 COleIPFrameWndclasse 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.

Voir aussi

Menus et ressources (OLE)
Activation
Serveurs
Containers