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 användare vill infoga ett OLE-objekt i ett program visar OLE en lista med objekttyper att välja mellan. OLE hämtar den här listan från systemregistreringsdatabasen, som innehåller information som tillhandahålls av alla serverprogram. När en server registrerar sig beskriver posterna i systemregistreringsdatabasen (registret) varje typ av objekt som den tillhandahåller, filtillägg och sökvägen till sig själv, bland annan information.
Ramverket och OLE-systemets DLL (Dynamic Link Libraries) använder det här registret för att avgöra vilka typer av OLE-objekt som är tillgängliga i systemet. OLE-system-DLL:er använder också det här registret för att avgöra hur du startar ett serverprogram när ett länkat eller inbäddat objekt aktiveras.
Den här artikeln beskriver vad varje serverprogram behöver göra när det installeras och varje gång det körs.
Detaljerad information om systemregistreringsdatabasen och formatet på de .reg filer som används för att uppdatera den finns i OLE-programmerarens referens.
Serverinstallation
När du först installerar serverprogrammet bör det registrera alla typer av OLE-objekt som det stöder. Du kan också låta servern uppdatera systemregistreringsdatabasen varje gång den körs som ett fristående program. Detta behåller registreringsdatabasen up-to-date om serverns körbara fil flyttas.
Anmärkning
MFC-program som genereras av programguiden registrerar sig automatiskt när de körs som fristående program.
Om du vill registrera programmet under installationen använder du RegEdit.exe programmet. Om du inkluderar ett installationsprogram med ditt program ska du låta installationsprogrammet köra "RegEdit /S appname.reg". (Flaggan /S anger tyst åtgärd, dvs. den visar inte dialogrutan som rapporterar att kommandot har slutförts.) Annars instruerar du användaren att köra RegEdit manuellt.
Anmärkning
Den .reg fil som skapats av programguiden innehåller inte den fullständiga sökvägen för den körbara filen. Installationsprogrammet måste antingen ändra .reg-filen för att inkludera den fullständiga sökvägen till den körbara filen eller ändra path-miljövariabeln så att den innehåller installationskatalogen.
RegEdit sammanfogar innehållet i .reg textfilen till registreringsdatabasen. Om du vill verifiera databasen eller reparera den använder du registereditorn. Var noga med att undvika att ta bort viktiga OLE-poster.
Serverinitialisering
När du skapar ett serverprogram med programguiden slutför guiden alla initieringsuppgifter åt dig automatiskt. I det här avsnittet beskrivs vad du måste göra om du skriver ett serverprogram manuellt.
När ett serverprogram startas av ett containerprogram lägger OLE-system-DLL:erna till alternativet "/Embedding" på serverns kommandorad. Ett serverprograms beteende skiljer sig beroende på om det startades av en container, så det första ett program bör göra när det börjar köras är att söka efter alternativet "/Embedding" eller "-Embedding" på kommandoraden. Om den här växeln finns läser du in en annan uppsättning resurser som visar att servern antingen är aktiv på plats eller helt öppen. Mer information finns i Menyer och resurser: Servertillägg.
Serverprogrammet bör också anropa dess CWinApp::RunEmbedded funktion för att parsa kommandoraden. Om det returnerar ett icke-nollvärde bör programmet inte visa sitt fönster eftersom det har körts från ett containerprogram, inte som ett fristående program. Den här funktionen uppdaterar serverns post i systemregistreringsdatabasen och anropar för din räkning medlemsfunktionen RegisterAll, vilket utför instansregistreringen.
När serverprogrammet startar måste du se till att det kan utföra instansregistrering. Instansregistrering informerar OLE-systemets DLL:er om att servern är aktiv och redo att ta emot begäranden från containrar. Den lägger inte till någon post i registreringsdatabasen. Utför instansregistrering av servern genom att anropa medlemsfunktionen ConnectTemplate som definieras av COleTemplateServer. Detta ansluter objektet CDocTemplate till objektet COleTemplateServer .
Funktionen ConnectTemplate tar tre parametrar: serverns CLSID, en pekare till CDocTemplate objektet och en flagga som anger om servern stöder flera instanser. En miniserver måste kunna stödja flera instanser, dvs. det måste vara möjligt för flera instanser av servern att köras samtidigt, en för varje container. Skicka därför TRUE för den här flaggan när du startar en miniserver.
Om du skriver en miniserver startas den per definition alltid av en container. Du bör fortfarande parsa kommandoraden för att söka efter alternativet "/Embedding". Avsaknaden av det här alternativet på kommandoraden innebär att användaren har försökt starta miniservern som ett fristående program. Om detta inträffar registrerar du servern med systemregistreringsdatabasen och visar sedan en meddelanderuta där användaren uppmanas att starta miniservern från ett containerprogram.
Se även
OLE
Servrar
CWinApp::RunAutomated
CWinApp::RunEmbedded
COleTemplateServer-klass