Server: Implementieren von direkten Rahmenfenstern

In diesem Artikel wird beschrieben, was Sie tun müssen, um die direkte Rahmenfenster in der visuellen bearbeitungs serveranwendung zu implementieren, wenn Sie nicht mit dem Anwendungs-Assistenten verwenden, um die Serveranwendung zu erstellen.Anstelle des Einhaltens der Prozedur, die in diesem Element gezeichnet wurde, können Sie eine vorhandene Klasse des direkten Rahmenfensters entweder über eine vom Assistenten generierte Anwendung der Anwendung oder einem Beispiel zu verwenden, die mit Visual C++ bereitgestellt wurden.

So deklarieren Sie eine Klasse des direkten Rahmenfensters

  1. Leiten Sie eine Klasse von COleIPFrameWnd direktes Rahmenfensters.

    • Verwenden Sie das DECLARE_DYNCREATE Makro in die Klassenheaderdatei.

    • Verwenden Sie das IMPLEMENT_DYNCREATE Makro in der Datei der Klassenimplementierung (.cpp).Dadurch können Objekte dieser vom Framework zu erstellenden Klasse.

  2. Deklarieren Sie einen COleResizeBar-Member in der Rahmenfensterklasse.Dies ist erforderlich, wenn Sie die direkte Größenanpassung in Serveranwendungen unterstützen möchten.

    Deklarieren Sie einen OnCreate Meldungshandler (unter Verwendung des Eigenschaften Fensters), und rufen Sie Create für den COleResizeBar-Member auf, wenn Sie sie definiert wurden.

  3. Wenn Sie eine Symbolleiste haben, deklarieren Sie einen CToolBar-Member in der Rahmenfensterklasse.

    Überschreiben Sie die OnCreateControlBars-Memberfunktion, um eine Symbolleiste zu erstellen, wenn der Server aktiv gesorgt ist.Beispiele:

    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;
    }
    

    Zeigen Sie die Diskussion über diesen Code nach Schritt 5 fort.

  4. Schließen Sie die Headerdatei für diese Klasse des direkten Rahmenfensters in der wichtigsten CPP-Datei ein.

  5. In InitInstance für die Anwendungsklasse, rufen Sie die SetServerInfo-Funktion des Dokumentvorlagen Objekts auf, um die in geöffnetem und in der direkten Bearbeitung vorgesehen Ressourcen und das direkte Rahmenfenster anzugeben.

Die Reihe von Funktionsaufrufen in der if-Anweisung stellt die Symbolleiste von Ressourcen, die vom Server bereitstellte.Zu diesem Zeitpunkt ist die Symbolleiste Teil der Hierarchie Fenster des Containers.Da diese Symbolleiste von CToolBar abgeleitet ist, leitet sie ihre Nachrichten an den Besitzer, das Rahmenfenster der Containeranwendung, es sei denn, Sie den Besitzer ändern.Daher ist der Aufruf von SetOwner erforderlich.Dieser Aufruf wird das Fenster, in dem Befehle für das direkte Rahmenfenster des Servers sein gesendet werden, wobei die Meldungen an den Server übergeben werden soll.Dies ermöglicht es dem Server, um zu den Vorgängen auf der Symbolleiste zu reagieren, die er bereitstellt.

Die ID für die Symbolleisten bitmap sollte dieselbe wie die anderen direkten Ressourcen sein, die in der Serveranwendung definiert sind.Ausführliche Informationen finden Sie Menüs und Ressourcen: Server-Hinzufügungen.

Weitere Informationen finden Sie unter COleIPFrameWnd, COleResizeBar und CDocTemplate::SetServerInfo im Klassenbibliotheks-Verweis.

Siehe auch

Konzepte

Server

Server: Implementieren eines Servers

Server: Implementieren von Server-Dokumenten

Server: Server-Elemente