Serveurs : implémenter des fenêtres frames sur place
Cet article explique ce que vous devez effectuer pour implémenter des fenêtres frame sur place dans votre application serveur d'édition visuelle si vous n'utilisez pas l'Assistant Application pour créer votre application serveur.À la place de suivre la procédure présentées dans cet article, vous pouvez utiliser une classe existante de fenêtre frame sur place 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 sur place
Dérivez une classe de fenêtre frame sur place d' COleIPFrameWnd.
Utilisez la macro d' DECLARE_DYNCREATE dans votre fichier d'en-tête de la classe.
Utilisez la macro d' IMPLEMENT_DYNCREATE dans votre fichier d'implémentation de classe (.cpp).Cela permet aux objets de cette classe à créer par l'infrastructure.
Déclarez un membre d' COleResizeBar dans la classe de fenêtre frame.Cette procédure est nécessaire si vous souhaitez prendre en charge le redimensionnement sur place dans les applications serveur.
Déclarez un gestionnaire de messages d' OnCreate (à l'aide de la fenêtre Propriétés ), et appelez Créer pour votre membre d' COleResizeBar , si vous l'avez défini.
Si vous avez une barre d'outils, déclarez un membre d' CToolBar dans la classe de fenêtre frame.
Substituez la fonction membre d' OnCreateControlBars pour créer une barre d'outils lorsque le serveur est en place 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 description de cette étape suivante 5. de code.
Ajoutez le fichier d'en-tête pour cette classe de fenêtre frame sur place dans votre fichier .cpp principal.
Dans InitInstance pour votre classe d'application, appelez la fonction d' SetServerInfo de l'objet de modèle de document pour spécifier les ressources et la fenêtre frame sur place à utiliser est ouvert et la modification sur place.
La série d'appels de fonction dans l'instruction de if crée la barre d'outils des ressources que le serveur a fournies.à ce stade, la barre d'outils fait partie de la hiérarchie de la fenêtre du conteneur.Étant donné que cette barre d'outils est dérivée d' CToolBar, elle passe ses messages à son propriétaire, la fenêtre frame de l'application conteneur, à moins que vous avez modifié le propriétaire.c'est pourquoi l'appel à SetOwner est nécessaire.Cet appel modifie la fenêtre où les commandes sont envoyées à la fenêtre frame sur place du serveur, responsable des messages à passer au serveur.Cela permet au serveur pour réagir aux opérations dans la barre d'outils qu'elle fournit.
L'ID de la bitmap de barre d'outils doit être identique aux autres ressources sur place définies dans votre application serveur.Consultez menus et ressources : ajouts de serveur pour plus de détails.
Pour plus d'informations, consultez COleIPFrameWnd, COleResizeBar, et le CDocTemplate::SetServerInfo dans class library reference.
Voir aussi
Concepts
Serveurs : implémenter un serveur