Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
In dit artikel worden de stappen beschreven die nodig zijn voor het opnemen van optionele geavanceerde functies in bestaande containertoepassingen. Deze functies zijn:
Een container/servertoepassing maken
Een container-/servertoepassing is een toepassing die fungeert als zowel een container als een server. Microsoft Word voor Windows is een voorbeeld hiervan. U kunt Word voor Windows-documenten insluiten in andere toepassingen en u kunt ook items insluiten in Word voor Windows-documenten. Het proces om uw containertoepassing aan te passen zodat deze zowel als container als als volledige server kan functioneren (u kunt echter geen combinatiecontainer/miniservertoepassing maken), lijkt op het proces voor het maken van een volledige server.
Het artikel Servers: Een server implementeren bevat een aantal taken die nodig zijn voor het implementeren van een servertoepassing. Als u een containertoepassing converteert naar een container-/servertoepassing, moet u enkele van deze taken uitvoeren, waarbij code aan de container wordt toegevoegd. Hieronder vindt u een overzicht van de belangrijke zaken die u moet overwegen:
De containercode die door de toepassingswizard is gemaakt, initialiseert het OLE-subsysteem reeds. U hoeft niets te wijzigen of toe te voegen voor die ondersteuning.
Waar de basisklasse van een documentklasse zich ook bevindt
COleDocument, wijzigt u de basisklasse inCOleServerDoc.Override
COleClientItem::CanActivateom te voorkomen dat items ter plaatse worden bewerkt terwijl de server zelf wordt gebruikt voor bewerken op dezelfde plaats.De MFC OLE-voorbeeld-OCLIENT heeft bijvoorbeeld een item ingesloten dat is gemaakt door uw container-/servertoepassing. U opent OCLIENT en bewerkt direct het item dat is gemaakt door uw container- en servertoepassing. Tijdens het bewerken van het item van uw toepassing besluit u een item in te sluiten dat is gemaakt door het MFC OLE-voorbeeld HIERSVR. Hiervoor kunt u geen plaatsgebonden activering gebruiken. U moet HIERSVR volledig openen om dit item te activeren. Omdat de Microsoft Foundation Class Library deze OLE-functie niet ondersteunt, kunt u met overschrijven
COleClientItem::CanActivatecontroleren op deze situatie en een mogelijke runtimefout in uw toepassing voorkomen.
Als u een nieuwe toepassing maakt en deze wilt functioneren als een container-/servertoepassing, kiest u deze optie in het dialoogvenster OLE-opties in de toepassingswizard en wordt deze ondersteuning automatisch gemaakt. Zie het artikel Overzicht: Een ActiveX-besturingselementcontainer maken voor meer informatie. Zie MFC-voorbeelden voor meer informatie over MFC-samples.
Houd er rekening mee dat u een MDI-toepassing niet in zichzelf kunt invoegen. Een toepassing die een container/server is, kan niet op zichzelf worden ingevoegd, tenzij het een SDI-toepassing is.
Koppelingen naar ingesloten objecten
Met de functie Koppelingen naar ingesloten objecten kan een gebruiker een document maken met een OLE-koppeling naar een ingesloten object in uw containertoepassing. Maak bijvoorbeeld een document in een tekstverwerker met een ingesloten spreadsheet. Als uw toepassing koppelingen naar ingesloten objecten ondersteunt, kan er een koppeling naar het werkblad in het document van de tekstverwerker worden geplakt. Met deze functie kan uw toepassing de informatie in de spreadsheet gebruiken zonder te weten waar de tekstverwerker deze oorspronkelijk heeft gekregen.
Koppelen aan ingesloten objecten in uw toepassing
Uw documentklasse afleiden uit
COleLinkingDocin plaats vanCOleDocument.Maak een OLE-klasse-id (CLSID) voor uw toepassing met behulp van de klasse-id-generator die is opgenomen in de OLE-ontwikkelhulpprogramma's.
Registreer de toepassing bij OLE.
Maak een
COleTemplateServerobject als lid van uw toepassingsklasse.Ga in de lidfunctie van uw toepassingsklasse
InitInstanceals volgt te werk:Verbind uw
COleTemplateServerobject met uw documentsjablonen door deConnectTemplatelidfunctie van het object aan te roepen.Roep de
COleTemplateServer::RegisterAlllidfunctie aan om alle klasseobjecten te registreren bij het OLE-systeem.Roep
COleTemplateServer::UpdateRegistryaan. De enige parameter voorUpdateRegistrymoet OAT_CONTAINER zijn als de toepassing niet wordt gestart met de "/Embedded"-schakeloptie. Hiermee wordt de toepassing geregistreerd als een container die koppelingen naar ingesloten objecten kan ondersteunen.Als de toepassing wordt gestart met de schakeloptie /Embedded, moet het hoofdvenster niet worden weergegeven, vergelijkbaar met een servertoepassing.
De MFC OLE-voorbeeld-OCLIENT implementeert deze functie. Zie de InitInstance functie in het OCLIENT.CPP-bestand van deze voorbeeldtoepassing voor een voorbeeld van hoe dit gedaan wordt.