Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
När en container startar en server så att en användare kan redigera ett inbäddat eller länkat OLE-objekt skapar serverprogrammet ett "serverobjekt". Serverobjektet, som är ett objekt i en klass som härletts från COleServerItem, tillhandahåller ett gränssnitt mellan serverdokumentet och containerprogrammet.
Klassen COleServerItem definierar flera åsidosättbara medlemsfunktioner som anropas av OLE, vanligtvis som svar på begäranden från containern. Serverobjekt kan representera en del av serverdokumentet eller hela dokumentet. När ett OLE-objekt är inbäddat i containerdokumentet representerar serverobjektet hela serverdokumentet. När OLE-objektet är länkat kan serverobjektet representera en del av serverdokumentet eller hela dokumentet, beroende på om länken är till en del eller till helheten.
I HIERSVR-exemplet har till exempel klassen server-item, CServerItem, en medlem som är en pekare till ett objekt i klassen CServerNode. Objektet CServerNode är en nod i HIERSVR-programmets dokument, som är ett träd. När objektet CServerNode är rotnoden representerar objektet CServerItem hela dokumentet. När objektet är en underordnad CServerNode nod representerar objektet CServerItem en del av dokumentet. Se HIERSVR för MFC OLE-exempel för ett exempel på den här interaktionen.
Implementera objekt på servern
Om du använder programguiden för att skapa "startkod" för ditt program behöver du bara inkludera serverobjekt i startkoden genom att välja något av serveralternativen på sidan OLE-alternativ. Utför följande steg om du lägger till serverobjekt i ett befintligt program:
Implementera ett serverobjekt
Härled en klass från
COleServerItem.I din härledda klass åsidosätter du
OnDrawmedlemsfunktionen.Ramverket anropar
OnDrawför att återge OLE-objektet till en metafil. Containerprogrammet använder den här metafilen för att återge objektet. Programmets visningsklass har också enOnDrawmedlemsfunktion som används för att återge objektet när serverprogrammet är aktivt.Implementera en åsidosättning av
OnGetEmbeddedItemför din serverdokumentklass. Mer information finns i artikeln Servrar: Implementera serverdokument och MFC OLE-exempel-HIERSVR.Implementera medlemsfunktionen för serverobjektsklassen
OnGetExtent. Ramverket anropar den här funktionen för att hämta objektets storlek. Standardimplementeringen gör ingenting.
Ett tips för Server-Item arkitektur
Som anges i Implementera serverobjekt måste serverprogram kunna återge objekt både i serverns vy och i en metafil som används av containerprogrammet. I Microsoft Foundation-klassbibliotekets programarkitektur återger vyklassens medlemsfunktion objektet när det redigeras (se OnDraw i klassbiblioteksreferensen). Serverobjektets OnDraw renderar objektet till en metafil i alla andra fall (se COleServerItem::OnDraw).
Du kan undvika duplicering av kod genom att skriva hjälpfunktioner i serverdokumentklassen OnDraw och anropa dem från funktionerna i vyn och serverobjektklasserna.
HIERSVR för MFC OLE-exempel använder den här strategin: funktionerna CServerView::OnDraw och CServerItem::OnDraw båda anropar CServerDoc::DrawTree för att återge objektet.
Både visningen och objektet har OnDraw medlemsfunktioner eftersom de ritas under olika förhållanden. Vyn måste ta hänsyn till faktorer som zoomning, markeringsstorlek och omfattning, urklipp och användargränssnittselement, till exempel rullningslister. Serverobjektet ritar däremot alltid hela OLE-objektet.
Mer information finns i CView::OnDraw, COleServerItem, COleServerItem::OnDraw och COleServerDoc::OnGetEmbeddedItem i klassbiblioteksreferensen.