Servery: Implementace oken s rámečkem na místě
Tento článek vysvětluje, co je nutné udělat při implementaci místních oken rámečku v serverové aplikaci pro vizuální úpravy, pokud k vytvoření serverové aplikace nepoužíváte průvodce aplikací. Místo postupu popsaného v tomto článku můžete použít existující místní třídu oken oken z aplikace generované aplikací nebo ukázky poskytované v jazyce Visual C++.
Deklarace místní třídy oken s rámečkem
Odvození místní třídy rámečku okna z
COleIPFrameWnd
.Použijte makro DECLARE_DYNCREATE v souboru záhlaví třídy.
V souboru implementace třídy (.cpp) použijte makro IMPLEMENT_DYNCREATE. To umožňuje, aby objekty této třídy byly vytvořeny architekturou.
Deklarujte
COleResizeBar
člen ve třídě okna s rámečkem. To je potřeba, pokud chcete podporovat místní změnu velikosti v serverových aplikacích.Deklarujte obslužnou rutinu
OnCreate
zprávy (pomocí Průvodce třídou) a volejteCreate
členaCOleResizeBar
, pokud jste ji definovali.Pokud máte panel nástrojů, deklarujte
CToolBar
člena ve třídě okna rámečku.OnCreateControlBars
Přepište členovou funkci a vytvořte panel nástrojů, když je server aktivní. Příklad: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; }
Podívejte se na diskuzi o tomto kódu podle kroku 5.
Do hlavního souboru .cpp zahrňte hlavičkový soubor pro tuto místní třídu rámečku.
Ve
InitInstance
třídě aplikace zavolejteSetServerInfo
funkci objektu šablony dokumentu, která určuje prostředky a místní okno rámečku, které se mají použít při otevřených a místních úpravách.
Řada volání funkcí v if
příkazu vytvoří panel nástrojů ze zadaných prostředků serveru. V tomto okamžiku je panel nástrojů součástí hierarchie oken kontejneru. Vzhledem k tomu, že tento panel nástrojů je odvozen od CToolBar
, předá jeho zprávy vlastníkovi, okno rámce aplikace kontejneru, pokud nezměníte vlastníka. Proto je potřeba volat SetOwner
. Toto volání změní okno, ve kterém se příkazy odesílají jako místní okno rámce serveru, což způsobí předání zpráv na server. To umožňuje serveru reagovat na operace na panelu nástrojů, který poskytuje.
ID rastrového obrázku panelu nástrojů by mělo být stejné jako ostatní místní prostředky definované v serverové aplikaci. Podrobnosti najdete v nabídkách a prostředcích: Doplňky serveru.
Další informace naleznete v tématu COleIPFrameWnd, COleResizeBar a CDocTemplate::SetServerInfo v referenční dokumentaci knihovny tříd.
Viz také
Servery
Servery: Implementace serveru
Servery: Implementace dokumentů serveru
Servery: Serverové položky