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 beskriver de steg som krävs för att införliva valfria avancerade funktioner i befintliga containerprogram. Dessa funktioner är:
Skapa ett container-/serverprogram
Ett container-/serverprogram är ett program som fungerar som både en container och en server. Microsoft Word för Windows är ett exempel på detta. Du kan bädda in Word för Windows-dokument i andra program och du kan även bädda in objekt i Word för Windows-dokument. Processen för att ändra containerprogrammet till både en container och en fullständig server (du kan inte skapa en kombinationscontainer/miniserverapp) liknar processen för att skapa en fullständig server.
Artikeln Servrar: Om du implementerar en server visas ett antal uppgifter som krävs för att implementera ett serverprogram. Om du konverterar ett containerprogram till ett container-/serverprogram måste du utföra några av dessa uppgifter och lägga till kod i containern. Följande visar viktiga saker att tänka på:
Containerkoden som skapas av programguiden initierar redan OLE-undersystemet. Du behöver inte ändra eller lägga till något för det stödet.
Oavsett var basklassen för en dokumentklass är
COleDocumentändrar du basklassen tillCOleServerDoc.Åsidosätt
COleClientItem::CanActivateför att undvika att redigera objekt direkt när servern används för direktredigering.Till exempel har MFC OLE-exempel-OCLIENT inbäddat ett objekt som skapats av containern/serverprogrammet. Du öppnar OCLIENT-programmet och redigerar objektet som skapats av containern/serverprogrammet på plats. När du redigerar programmets objekt bestämmer du dig för att bädda in ett objekt som skapats av MFC OLE-exempel-HIERSVR. För att göra detta kan du inte använda aktivering på plats. Du måste öppna HIERSVR helt för att aktivera det här objektet. Eftersom Microsoft Foundation-klassbiblioteket inte stöder den här OLE-funktionen kan du genom att åsidosätta
COleClientItem::CanActivatesöka efter och förhindra ett eventuellt körtidsfel i programmet.
Om du skapar ett nytt program och vill att det ska fungera som ett container-/serverprogram väljer du det alternativet i dialogrutan OLE-alternativ i programguiden och det här stödet skapas automatiskt. Mer information finns i artikeln Översikt: Skapa en ActiveX-kontrollcontainer. Information om MFC-exempel finns i MFC-exempel.
Observera att du inte kan infoga ett MDI-program i sig självt. Ett program som är en container/server kan inte infogas i sig själv om det inte är ett SDI-program.
Länkar till inbäddade objekt
Med funktionen Länkar till inbäddade objekt kan en användare skapa ett dokument med en OLE-länk till ett inbäddat objekt i containerprogrammet. Skapa till exempel ett dokument i en ordbehandlare som innehåller ett inbäddat kalkylblad. Om programmet stöder länkar till inbäddade objekt kan det klistra in en länk till kalkylbladet som finns i ordbehandlarens dokument. Med den här funktionen kan din applikation använda informationen i kalkylbladet utan att veta var ordbehandlaren ursprungligen fick den ifrån.
Så här länkar du till inbäddade objekt i ditt program
Härled dokumentklassen från
COleLinkingDoci stället förCOleDocument.Skapa ett OLE-klass-ID (CLSID) för ditt program med hjälp av klass-ID-generatorn som ingår i OLE Development Tools.
Registrera programmet med OLE.
Skapa ett
COleTemplateServerobjekt som medlem i din programklass.Gör följande i programklassens
InitInstancemedlemsfunktion:Anslut objektet
COleTemplateServertill dokumentmallarna genom att anropa objektetsConnectTemplatemedlemsfunktion.COleTemplateServer::RegisterAllAnropa medlemsfunktionen för att registrera alla klassobjekt med OLE-systemet.Ringa
COleTemplateServer::UpdateRegistry. Den enda parametern förUpdateRegistryska vara OAT_CONTAINER om programmet inte startas med "/Embedded"-växeln. Detta registrerar programmet som en container som kan stödja länkar till inbäddade objekt.Om programmet startas med växeln "/Embedded" bör det inte visa huvudfönstret, liknande ett serverprogram.
MFC OLE-exempel-OCLIENT implementerar den här funktionen. Ett exempel på hur detta görs InitInstance finns i funktionen i OCLIENT. CPP-fil för det här exempelprogrammet.