Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 wykonywać procedurę opisaną w tym artykule, możesz użyć istniejącej wbudowanej klasy okna ramowego z aplikacji stworzonej za pomocą kreatora lub przykładu dostarczonego z programem Visual C++.
Aby zadeklarować klasę okien ramowych w miejscu
Utwórz klasę okna w miejscu pochodną od
COleIPFrameWnd.Użyj makra DECLARE_DYNCREATE w pliku nagłówka klasy.
Użyj makra IMPLEMENT_DYNCREATE w implementacji klasy (w pliku .cpp). Dzięki temu obiekty tej klasy mogą być tworzone przez platformę.
Zadeklaruj element członkowski
COleResizeBarw klasie okna ramowego. Jest to konieczne, jeśli chcesz obsługiwać bezpośrednią zmianę rozmiaru w aplikacjach serwerowych.Zadeklaruj procedurę obsługi komunikatów
OnCreate(korzystając z Kreatora klas), a następnie wywołajCreatedla swojego członkaCOleResizeBar, jeśli został on zdefiniowany.Jeśli masz pasek narzędzi, zadeklaruj członek
CToolBarw klasie okna ramki.Zastąpi
OnCreateControlBarsfunkcję 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 okna ramowego w głównym pliku .cpp.
W
InitInstanceklasie aplikacji wywołaj funkcjęSetServerInfoobiektu szablonu dokumentu, aby określić zasoby i okno ramki do edycji w oknie oraz edycji w miejscu.
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 jest oparty na CToolBar, przekaże swoje komunikaty do właściciela, czyli ramowego okna aplikacji kontenera, chyba że zmienisz właściciela. Dlatego wezwanie do SetOwner jest konieczne. To wywołanie zmienia okno docelowe, do którego są wysyłane polecenia, na ramę okna serwera, co powoduje przekazanie komunikatów do serwera. Dzięki temu serwer może reagować na operacje na wyświetlonym pasku narzędzi.
ID mapy bitowej paska narzędzi powinien być taki sam jak inne zasoby, 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 także
Serwerów
Serwery: implementowanie serwera
Serwery: implementowanie dokumentów serwera
Serwery: elementy serwera