Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln förklarar vad du måste göra för att implementera ramfönster på plats i ditt program för visuell redigeringsserver om du inte använder programguiden för att skapa serverprogrammet. I stället för att följa proceduren som beskrivs i den här artikeln kan du använda en befintlig ramfönsterklass på plats från antingen ett programguidegenererat program eller ett exempel som tillhandahålls med Visual C++.
Deklarera en ramfönsterklass på plats
Härled en ramfönsterklass på stället från
COleIPFrameWnd.Använd DECLARE_DYNCREATE makrot i klasshuvudfilen.
Använd IMPLEMENT_DYNCREATE makrot i din klassimplementeringsfil (.cpp). På så sätt kan objekt i den här klassen skapas av ramverket.
Deklarera en
COleResizeBarmedlem i klassen frame-window. Detta behövs om du vill ha stöd för storleksändring på plats i serverprogram.Deklarera en
OnCreatemeddelandehanterare (med hjälp av klassguiden) och anropaCreatedinCOleResizeBarmedlem om du har definierat den.Om du har ett verktygsfält deklarerar du en
CToolBarmedlem i klassen frame-window.Åsidosätt
OnCreateControlBarsmedlemsfunktionen för att skapa ett verktygsfält när servern är aktiv på plats. Till exempel: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; }Se diskussionen om den här koden i steg 5.
Inkludera huvudfilen för denna in-place ramfönsterklass i din .cpp huvudfil.
I
InitInstanceska du för programklassen anropaSetServerInfo-funktionen hos dokumentmallsobjektet för att ange resurser och ramfönster som ska användas vid öppen redigering och redigering på plats.
Serien med funktionsanrop i -instruktionen if skapar verktygsfältet från de resurser som servern har angett. Nu är verktygsfältet en del av containerns fönsterhierarki. Eftersom det här verktygsfältet härleds från CToolBarskickar det sina meddelanden till dess ägare, containerprogrammets ramfönster, såvida du inte ändrar ägaren. Det är därför uppmaningen till SetOwner är nödvändig. Det här anropet ändrar fönstret dit kommandon skickas till serverns in-place-ramfönster, vilket gör att meddelandena vidarebefordras till servern. På så sätt kan servern reagera på åtgärder i verktygsfältet som den tillhandahåller.
ID:t för verktygsfältets bitmapp ska vara samma som de andra resurser på plats som definierats i serverprogrammet. Mer information finns i Menyer och resurser: Servertillägg .
Mer information finns i COleIPFrameWnd, COleResizeBar och CDocTemplate::SetServerInfo i klassbiblioteksreferensen.
Se även
Servrar
Servrar: Implementering av en server
Servrar: Implementering av serverdokument
Servrar: Serverobjekt