Partager via


Serveurs : implémentations de fenêtres frame sur place

Cet article explique ce que vous devez effectuer pour implémenter des fenêtres frame au sein de votre application serveur d'édition visuelle si vous n'utilisez pas l'Assistant d'application pour créer votre application serveur. À la place de la procédure décrite dans cet article, vous pouvez utiliser une classe frame-window existante à partir d’une application générée par l’Assistant Application ou d’un exemple fourni avec Visual C++.

Pour déclarer une classe de fenêtre frame en place

  1. Dérivez une classe de fenêtre frame en place depuis COleIPFrameWnd.

    • Utilisez la macro DECLARE_DYNCREATE dans votre fichier d’en-tête de classe.

    • Utilisez la macro IMPLEMENT_DYNCREATE dans votre fichier d’implémentation de classe (.cpp). Cela permet aux objets de cette classe d'être créés par le .NET Framework.

  2. Déclarez un membre COleResizeBar dans la classe de fenêtre frame. Cela est nécessaire si vous voulez prendre en charge le redimensionnement en place dans les applications serveur.

    Déclarez un OnCreate gestionnaire de messages (à l’aide de l’Assistant Classe) et appelez Create votre COleResizeBar membre si vous l’avez défini.

  3. Si vous avez une barre d'outils, déclarez un membre CToolBar dans la classe de fenêtre frame.

    Remplacez la fonction membre OnCreateControlBars pour créer une barre d'outils lorsque le serveur en place est actif. Par exemple :

    BOOL CInPlaceFrame::OnCreateControlBars(CFrameWnd* pWndFrame, CFrameWnd* pWndDoc)
    {
       UNREFERENCED_PARAMETER(pWndDoc);
    
       // Set owner to this window, so messages are delivered to correct app
       m_wndToolBar.SetOwner(this);
    
       // Create toolbar on client's frame window
       if (!m_wndToolBar.CreateEx(pWndFrame, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
          | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
          !m_wndToolBar.LoadToolBar(IDR_SRVR_INPLACE))
       {
          TRACE0("Failed to create toolbar\n");
          return FALSE;
       }
    
       // TODO: Delete these three lines if you don't want the toolbar to be dockable
       m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
       pWndFrame->EnableDocking(CBRS_ALIGN_ANY);
       pWndFrame->DockControlBar(&m_wndToolBar);
    
       return TRUE;
    }
    

    Consultez la discussion sur ce code en suivant l'étape 5.

  4. Incluez le fichier d'en-tête pour cette classe de fenêtre frame en place dans le fichier .cpp principal.

  5. Dans InitInstance pour votre classe d'application, appelez la fonction SetServerInfo de l'objet modèle de document afin de spécifier les ressources et la fenêtre frame en place à utiliser pour l'ouverture et la modification en place.

La série d’appels de fonction dans l’instruction if crée la barre d’outils à partir des ressources fournies par le serveur. À ce stade, la barre d'outils fait partie de la hiérarchie dans la fenêtre du conteneur. Cette barre d'outils est dérivée de CToolBar, elle transmet les messages à son propriétaire, la fenêtre frame de l'application conteneur, sauf si vous modifiez le propriétaire. C'est pourquoi l'appel à SetOwner est nécessaire. Cet appel modifie la fenêtre lorsque les commandes sont envoyées à la fenêtre frame en place du serveur, ce qui fait que des messages sont transmis au serveur. Ainsi, le serveur peut réagir aux opérations dans la barre d'outils disponible.

L'ID de la bitmap de la barre d'outils doit être le même que les autres ressources en place définies dans votre application serveur. Consultez menus et ressources : Ajouts de serveur pour plus d’informations.

Pour plus d’informations, consultez COleIPFrameWnd, COleResizeBar et CDocTemplate ::SetServerInfo dans la référence de la bibliothèque de classes.

Voir aussi

Serveurs
Serveurs : implémentation d’un serveur
Serveurs : implémentation de documents de serveur
Serveurs : éléments du serveur