Delen via


Servers: Serveritems

Wanneer een container een server start, zodat een gebruiker een ingesloten of gekoppeld OLE-item kan bewerken, maakt de servertoepassing een 'serveritem'. Het serveritem, een object van een klasse die is COleServerItemafgeleid van, biedt een interface tussen het serverdocument en de containertoepassing.

De COleServerItem-klasse definieert verschillende overschrijfbare lidfuncties die door OLE worden aangeroepen, meestal als reactie op verzoeken van de container. Serveritems kunnen een deel van het serverdocument of het hele document vertegenwoordigen. Wanneer een OLE-item is ingesloten in het containerdocument, vertegenwoordigt het serveritem het hele serverdocument. Wanneer het OLE-item is gekoppeld, kan het serveritem een deel van het serverdocument of het hele document vertegenwoordigen, afhankelijk van of de koppeling naar een deel of het geheel is.

In het HIERSVR-voorbeeld , bijvoorbeeld de klasse serveritem, CServerItemheeft een lid dat een aanwijzer is naar een object van de klasse CServerNode. Het CServerNode object is een knooppunt in het document van de HIERSVR-toepassing, dat een boomstructuur is. Wanneer het CServerNode object het hoofdknooppunt is, vertegenwoordigt het CServerItem object het hele document. Wanneer het CServerNode object een onderliggend knooppunt is, vertegenwoordigt het CServerItem object een deel van het document. Zie het MFC OLE-voorbeeld HIERSVR voor een voorbeeld van deze interactie.

Serveritems implementeren

Als u de toepassingswizard gebruikt om starterscode voor uw toepassing te produceren, hoeft u alleen serveritems op te nemen in de startercode door een van de serveropties te kiezen op de pagina OLE-opties. Als u serveritems aan een bestaande toepassing toevoegt, moet u de volgende stappen uitvoeren:

Een serveritem implementeren

  1. Een klasse afleiden van COleServerItem.

  2. Overschrijf de OnDraw lidfunctie in uw afgeleide klasse.

    Het framework roept OnDraw aan om het OLE-item in een metabestand weer te geven. De containertoepassing gebruikt dit metabestand om het item weer te geven. De weergaveklasse van uw toepassing heeft ook een OnDraw lidfunctie, die wordt gebruikt om het item weer te geven wanneer de servertoepassing actief is.

  3. Implementeer een overschrijving van OnGetEmbeddedItem voor uw serverdocumentklasse. Zie het artikel Servers: Serverdocumenten en het MFC OLE-voorbeeld HIERSVR implementeren voor meer informatie.

  4. Implementeer de lidfunctie van uw serveritemklasse OnGetExtent. In het framework wordt deze functie aangeroepen om de grootte van het item op te halen. De standaard implementatie doet niets.

Een tip voor Server-Item architectuur

Zoals vermeld in Serveritems implementeren, moeten servertoepassingen items kunnen weergeven in de weergave van de server en in een metabestand dat wordt gebruikt door de containertoepassing. In de toepassingsarchitectuur van de Microsoft Foundation Class Library geeft de lidfunctie van de weergaveklasse OnDraw het item weer wanneer het wordt bewerkt (zie CView::OnDraw in de klassebibliotheekreferentie). Het serveritem OnDraw geeft het item weer in een metabestand in alle andere gevallen (zie COleServerItem::OnDraw).

U kunt duplicatie van code voorkomen door helperfuncties te schrijven in uw serverdocumentklasse en deze aan te roepen vanuit de functies in uw OnDraw weergave- en serveritemklassen. De MFC OLE-voorbeeld HIERSVR maakt gebruik van deze strategie: de functies CServerView::OnDraw en CServerItem::OnDraw beide aanroepen CServerDoc::DrawTree om het item weer te geven.

De weergave en het item hebben beide OnDraw lidfuncties omdat ze onder verschillende omstandigheden worden weergegeven. De weergave moet rekening houden met factoren zoals zoomen, selectiegrootte en -omvang, knipsels en elementen van de gebruikersinterface, zoals schuifbalken. Het serveritem daarentegen tekent altijd het hele OLE-object.

Zie CView::OnDraw, COleServerItem, COleServerItem::OnDraw en COleServerDoc::OnGetEmbeddedItem in de naslaginformatie voor klassenbibliotheek voor meer informatie.

Zie ook

Servers