Serwery: implementowanie okien ramowych w miejscu
W tym artykule wyjaśniono, co należy zrobić, aby realizacji ramki w miejscu systemu windows w visual edytowania aplikacji serwera, jeśli nie używasz Kreatora aplikacji do tworzenia aplikacji serwera.Zamiast zgodnie z procedurą przedstawioną w tym artykule, można użyć istniejącej klasy okno ramek w miejscu z aplikacji wizard–generated aplikacji lub próbki, wyposażone w programie Visual C++.
Aby zadeklarować klasy okno ramek w miejscu
Pochodzić z klasą okno ramek w miejscu z COleIPFrameWnd.
Użycie DECLARE_DYNCREATE makro w pliku nagłówka klasy.
Użycie IMPLEMENT_DYNCREATE makro w pliku klasy implementacji (CPP).Dzięki temu obiekty utworzone w ramach tej klasy.
DECLARE COleResizeBar Członkowskich w klasie okno ramek.Jest to niezbędne, jeśli mają być obsługiwani w miejsce zmiana rozmiaru w aplikacjach serwerowych.
Oświadczają, OnCreate obsługi wiadomości (za pomocą Właściwości okna) i wywołać Utwórz dla swojej COleResizeBar członka, jeśli już zdefiniowane to.
Jeśli pasek narzędzi, należy zadeklarować CToolBar Członkowskich w klasie okno ramek.
Zastąpić OnCreateControlBars funkcji składowej, aby utworzyć pasek narzędzi, gdy serwer jest aktywny na miejscu.Na 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; }
Zobacz Omówienie tego kodu po kroku 5.
Umieścić pliku nagłówka dla tej klasy okno ramek w miejscu w pliku głównym CPP.
W InitInstance dla swojej klasy aplikacji wywołać SetServerInfo funkcji obiektu szablonu dokumentu do określania zasobów i w miejscu ramki okna do wykorzystania w edycji otwartych i w miejscu.
Szereg funkcji wywołuje w czy instrukcja tworzy pasku narzędzi z zasobów serwera określoną.W tym momencie pasek narzędzi jest częścią kontenera okno hierarchii.Ponieważ ten pasek narzędzi jest pochodną CToolBar, to przejdzie swoje wiadomości do dyspozycji właściciela, okna ramki aplikacji kontenera, o ile zmiany właściciela.Dlatego wywołanie SetOwner jest niezbędne.To wywołanie zmienia okno, gdzie polecenia są wysyłane do serwera w miejscu ramki okna, powodując wiadomości mają być przekazywane do serwera należy.Dzięki temu serwer reagować na operacje na pasek narzędzi, który go zawiera.
Identyfikator dla mapy bitowej narzędzi powinien być taki sam, jak innych zasobów w miejscu zdefiniowane w aplikacji serwera.Zobacz menu i zasoby: dodatki serwera Aby uzyskać szczegółowe informacje.
Aby uzyskać więcej informacji, zobacz COleIPFrameWnd, COleResizeBar, i CDocTemplate::SetServerInfo w Informacje dotyczące biblioteki klas.
Zobacz też
Koncepcje
Serwery: implementowanie serwera