serveurs : Implémenter des fenêtres frame sur place
Cet article explique ce que vous devez effectuer pour implémenter des fenêtres cadres sur place dans votre application d'édition visuelle de serveur si vous n'utilisez pas l'Assistant d'application pour créer votre application serveur. Au lieu de suivre la procédure soulignée dans cet article, vous pouvez utiliser une classe existante d'affichage de cadre de fenêtre soit depuis une application générée par l'Assistant soit depuis un échantillon fourni avec Visual C++.
Pour déclarer une classe de cadre de fenêtre sur place
Dérivez une classe de fenêtre cadre sur place depuis COleIPFrameWnd.
Utilisez la macro DECLARE_DYNCREATE dans votre fichier d'en-tête de la classe.
Utilisez la macro IMPLEMENT_DYNCREATE dans votre fichier de l'implémentation de classe (.cpp). Cela permet aux objets de cette classe d'être créés par le .NET Framework.
Déclarez un membre de COleResizeBar dans la classe cadre de fenêtre. Cela est nécessaire si vous voulez prendre en charge le redimensionnement sur place dans les applications serveur.
Déclarez un gestionnaire de messages OnCreate (à l'aide de la fenêtre Propriétés ), puis appelez Créer pour votre membre de COleResizeBar, si vous l'avez défini.
Si vous avez une barre d'outils, déclarez un membre de CToolBar dans la classe cadre de fenêtre.
Remplacer la fonction membre de OnCreateControlBars pour créer une barre d'outils lorsque le serveur est en place et 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 l'étude de ce code en suivant l'étape 5.
Incluez le fichier d'en-tête pour cette classe d'affichage sur le champ dans le fichier .cpp principal.
Dans InitInstance pour votre classe d'application, appelez la fonction SetServerInfo de l'objet modèle de document pour spécifier les ressources et la fenêtre cadre sur place à utiliser pour l'ouverture et les modifications sur place.
La série d'appels de fonction dans l'instruction if crée la barre d'outils de ressources que le serveur a fournies. À 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, il passe les messages à son propriétaire, la fenêtre cadre 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 cadre sur place du serveur, ce qui entraîne que des messages sont passés au serveur. Cela permet au serveur de réagir à des opérations dans la barre d'outils qu'elle propose.
L'ID de la bitmap de la barre d'outils doit être le même que les autres ressources sur place définies dans votre application serveur. Voir le Menus et ressources : Ajouts de serveur pour plus d'informations.
Pour plus d'informations, consultez COleIPFrameWnd, COleResizeBar, et le CDocTemplate::SetServerInfo dans la référence de la bibliothèque de classes.
Voir aussi
Concepts
serveurs : implémenter un serveur