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.
En kontroll implementerar ett eller flera av flera beständighetsgränssnitt för att stödja beständighet i dess tillstånd. Till exempel stöder gränssnittet IPersistStreamInit strömbaserad beständighet för kontrollens tillstånd. IPersistStreamInit ersätter IPersistStream och lägger till en initieringsmetod InitNy. De andra metoderna är desamma i båda gränssnitten. IPersistStreamInit härleds inte från IPersistStream; ett objekt stöder bara ett av de två gränssnitten baserat på om det kräver möjligheten att initiera nya instanser av sig själv.
Andra beständighetsgränssnitt som en kontroll kan erbjuda är: IPersistStorage, IPersistMemory, IPersistPropertyBag, IPersistMoniker. Kontrollverktyget måste bestämma vilka typer av beständighet som är viktigast och implementera lämpliga beständighetsgränssnitt. Kontroll-implementeraren bestämmer också vad som ska sparas. En kontroll kan till exempel spara de aktuella värdena för dess egenskaper eller dess plats och storlek i containern. Klienten bestämmer vilket gränssnitt den föredrar att använda.
Innan du läser in en kontroll från dess beständiga tillstånd kan en klient kontrollera flaggan OLEMISC_SETCLIENTSITEFIRST för att avgöra om kontrollen har stöd för att hämta dess klientplats och omgivande egenskaper innan den läser in dess beständiga tillstånd. Den här optimeringen kan spara tid när du instansierar en kontroll eftersom kontrollen sedan är fri att ignorera dess beständiga värden i stället för att läsa in dem bara för att låta dem åsidosättas av omgivande egenskaper som tillhandahålls av klienten.
En kontroll kan också ha stöd för att spara och återställa dess tillstånd i en OLE-egenskapsuppsättning, en uppsättning identifierare och värden i ett angivet format. Den här funktionen kan vara användbar med containrar som Visual Basic, som sparar sina program i ett textformat. En kontroll som vill stödja den här funktionen implementerar IDataObject::GetData och IDataObject::SetData för att skicka dess egenskapsvärden till respektive från containern. Det är containerns jobb att konvertera den här informationen till text och spara den. De identifierare som används av kontrollen motsvarar kontrollens egenskapsnamn och värden. Se OLE CDK för definitionen av den här egenskapsuppsättningen.
Relaterade ämnen