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
Utwórz klasę okien ramowych w miejscu z
COleIPFrameWnd
klasy .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ę.
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łajCreate
elementCOleResizeBar
członkowski, jeśli został on zdefiniowany.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.
Dołącz plik nagłówkowy dla tej klasy okien ramowych w miejscu w głównym pliku cpp.
W
InitInstance
klasie aplikacji wywołajSetServerInfo
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 CToolBar
elementu , 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