Server: implementazione di finestre cornice sul posto

In questo articolo viene illustrata la procedura per implementare le finestre cornice sul posto in un'applicazione server di modifica visiva se non si intende utilizzare la creazione guidata dell'applicazione per creare un'applicazione server. Al posto della procedura descritta in questo articolo, è possibile usare una classe finestra cornice sul posto esistente da un'applicazione generata dalla procedura guidata dell'applicazione o da un esempio fornito con Visual C++.

Per dichiarare una classe della finestra cornice sul posto

  1. Derivare una classe della finestra cornice sul posto da COleIPFrameWnd.

    • Usare la macro DECLARE_DYNCREATE nel file di intestazione della classe.

    • Usare la macro IMPLEMENT_DYNCREATE nel file di implementazione della classe (con estensione cpp). In questo modo gli oggetti di questa classe possono essere creati dal framework.

  2. Dichiarare un membro COleResizeBar nella classe della finestra cornice. Ciò è necessario se si vuole supportare il ridimensionamento sul posto nelle applicazioni server.

    Dichiarare un OnCreate gestore di messaggi (usando la Creazione guidata classi) e chiamare Create il COleResizeBar membro, se è stato definito.

  3. Se si dispone di una barra degli strumenti, dichiarare un membro CToolBar nella classe della finestra cornice.

    Eseguire l'override della funzione membro OnCreateControlBars per creare una barra degli strumenti quando il server è attivo sul posto. Ad esempio:

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

    Vedere la discussione su questo codice riportata dopo il passaggio 5.

  4. Includere il file di intestazione per questa classe della finestra cornice sul posto nel file principale con estensione cpp.

  5. In InitInstance per la classe dell'applicazione, chiamare la funzione SetServerInfo dell'oggetto modello di documento per specificare le risorse e la finestra cornice sul posto da utilizzare nella modifica aperta e sul posto.

La serie di chiamate di funzione nell'istruzione if crea la barra degli strumenti dalle risorse fornite dal server. A questo punto, la barra degli strumenti fa parte della gerarchia della finestra del contenitore. Poiché questa barra degli strumenti è derivata da CToolBar, passerà i messaggi al proprietario, la finestra cornice dell'applicazione contenitore, a meno che non si modifichi il proprietario. Per questo motivo la chiamata a SetOwner è necessaria. Questa chiamata cambia la finestra a cui vengono inviati i comandi con la finestra cornice sul posto del server, causando così il passaggio dei messaggi al server. In questo modo il server può reagire alle operazioni sulla barra degli strumenti che fornisce.

L'ID per la bitmap della barra degli strumenti deve corrispondere a quello delle altre risorse sul posto definite nell'applicazione server. Per informazioni dettagliate, vedere Menu e risorse: Aggiunte server .

Per altre informazioni, vedere COleIPFrameWnd, COleResizeBar e CDocTemplate::SetServerInfo nella guida di riferimento alla libreria di classi.

Vedi anche

Server
Server: implementazione di un server
Server: implementazione di documenti server
Server: elementi server