Udostępnij za pośrednictwem


Serwery: implementowanie okien ramowych w miejscu

W tym artykule wyjaśniono, co należy zrobić w celu zaimplementowania okien ramowych w aplikacji serwera do edycji wizualizacji, jeśli nie używasz kreatora aplikacji do tworzenia aplikacji serwera. Zamiast wykonać procedurę opisaną w tym artykule, możesz użyć istniejącej klasy okien ramowych w miejscu z poziomu aplikacji wygenerowanej przez kreatora lub przykładu dostarczonego z programem Visual C++.

Aby zadeklarować klasę okien ramowych w miejscu

  1. Utwórz klasę okien ramowych w miejscu z COleIPFrameWndklasy .

    • Użyj makra DECLARE_DYNCREATE w pliku nagłówka klasy.

    • Użyj makra IMPLEMENT_DYNCREATE w pliku implementacji klasy (cpp). Dzięki temu obiekty tej klasy mogą być tworzone przez platformę.

  2. Zadeklaruj element członkowski COleResizeBar w klasie okna ramowego. Jest to konieczne, jeśli chcesz obsługiwać zmianę rozmiaru w miejscu w aplikacjach serwerowych.

    Zadeklaruj procedurę OnCreate obsługi komunikatów (przy użyciu Kreatora klas) i wywołaj Create element COleResizeBar członkowski, jeśli został on zdefiniowany.

  3. Jeśli masz pasek narzędzi, zadeklaruj element CToolBar członkowski w klasie okna ramowego.

    Zastąpi OnCreateControlBars funkcję składową, aby utworzyć pasek narzędzi, gdy serwer jest aktywny. Przykład:

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

    Zapoznaj się z omówieniem tego kodu, wykonując krok 5.

  4. Dołącz plik nagłówkowy dla tej klasy okien ramowych w miejscu w głównym pliku cpp.

  5. W InitInstance klasie aplikacji wywołaj SetServerInfo funkcję obiektu szablonu dokumentu, aby określić zasoby i okno ramek w miejscu, które mają być używane w otwartym i w miejscu edycji.

Seria wywołań funkcji w if instrukcji tworzy pasek narzędzi na podstawie udostępnionych zasobów serwera. Na tym etapie pasek narzędzi jest częścią hierarchii okien kontenera. Ponieważ ten pasek narzędzi pochodzi z CToolBarelementu , przekaże komunikaty do właściciela, okno ramki aplikacji kontenera, chyba że zmienisz właściciela. Dlatego wezwanie do SetOwner jest konieczne. To wywołanie zmienia okno, w którym polecenia są wysyłane do okna ramek serwera, co powoduje przekazanie komunikatów do serwera. Dzięki temu serwer może reagować na operacje na wyświetlonym pasku narzędzi.

Identyfikator mapy bitowej paska narzędzi powinien być taki sam jak inne zasoby w miejscu zdefiniowane w aplikacji serwera. Aby uzyskać szczegółowe informacje, zobacz Menu i zasoby: Dodatki serwera.

Aby uzyskać więcej informacji, zobacz COleIPFrameWnd, COleResizeBar i CDocTemplate::SetServerInfo w dokumentacji biblioteki klas.

Zobacz też

Serwery
Serwery: implementowanie serwera
Serwery: implementowanie dokumentów serwera
Serwery: elementy serwera