Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Wanneer een gebruiker een OLE-item in een toepassing wil invoegen, geeft OLE een lijst met objecttypen weer waaruit u kunt kiezen. OLE haalt deze lijst op uit de systeemregistratiedatabase, die informatie bevat die door alle servertoepassingen wordt verstrekt. Wanneer een server zichzelf registreert, beschrijven de vermeldingen in de systeemregistratiedatabase (het register) elk type object dat het levert, bestandsextensies en het pad naar zichzelf, onder andere informatie.
Het framework en het OLE-systeem dynamic-linkbibliotheken (DLL) gebruiken dit register om te bepalen welke typen OLE-items beschikbaar zijn op het systeem. De OLE-systeem-DLL's gebruiken dit register ook om te bepalen hoe u een servertoepassing start wanneer een gekoppeld of ingesloten object wordt geactiveerd.
In dit artikel wordt beschreven wat elke servertoepassing moet doen wanneer deze wordt geïnstalleerd en telkens wanneer deze wordt uitgevoerd.
Zie de naslaginformatie van de OLE-programmeur voor gedetailleerde informatie over de systeemregistratiedatabase en de indeling van de .reg bestanden die worden gebruikt om deze bij te werken.
Serverinstallatie
Wanneer u de servertoepassing voor het eerst installeert, moet deze alle typen OLE-items registreren die worden ondersteund. U kunt de server ook de systeemregistratiedatabase bijwerken telkens wanneer deze wordt uitgevoerd als een zelfstandige toepassing. Hierdoor blijft de registratiedatabase up-toactueel als het uitvoerbare bestand van de server wordt verplaatst.
Opmerking
MFC-toepassingen die door de toepassingswizard worden gegenereerd, registreren zichzelf automatisch wanneer ze worden uitgevoerd als zelfstandige toepassingen.
Als u uw toepassing wilt registreren tijdens de installatie, gebruikt u het RegEdit.exe programma. Als u een installatieprogramma met uw toepassing opneemt, moet u het installatieprogramma 'RegEdit /S appname.reg' uitvoeren. (De vlag /S geeft een stille bewerking aan, dat wil gezegd, het dialoogvenster dat rapporteert dat de opdracht is voltooid niet wordt weergegeven.) Anders geeft u de gebruiker de opdracht om RegEdit handmatig uit te voeren.
Opmerking
Het .reg bestand dat door de toepassingswizard is gemaakt, bevat niet het volledige pad voor het uitvoerbare bestand. Het installatieprogramma moet het .reg-bestand wijzigen om het volledige pad naar het uitvoerbare bestand op te nemen of de omgevingsvariabele PATH wijzigen om de installatiemap op te nemen.
RegEdit voegt de inhoud van het .reg tekstbestand samen in de registratiedatabase. Gebruik de Register-editor om de database te verifiëren of te herstellen. Vermijd het verwijderen van essentiële OLE-vermeldingen.
Server initialisatie
Wanneer u een servertoepassing maakt met de toepassingswizard, worden alle initialisatietaken automatisch voor u voltooid. In deze sectie wordt beschreven wat u moet doen als u handmatig een servertoepassing schrijft.
Wanneer een servertoepassing wordt gestart door een containertoepassing, voegen de OLE-systeem-DLL's de optie '/Embedding' toe aan de opdrachtregel van de server. Het gedrag van een servertoepassing verschilt, afhankelijk van of deze is gestart door een container, dus het eerste wat een toepassing moet doen wanneer de uitvoering wordt gestart, is controleren op de optie '/Insluiten' of '-Insluiten' op de opdrachtregel. Als deze switch bestaat, laadt u een andere set resources die de server weergeven als in-place actief of volledig geopend. Zie Menu's en resources voor meer informatie: Server toevoegingen.
De servertoepassing moet ook de functie aanroepen CWinApp::RunEmbedded om de opdrachtregel te parseren. Als er een niet-nulwaarde wordt geretourneerd, mag de toepassing het venster niet weergeven omdat deze is uitgevoerd vanuit een containertoepassing, niet als een zelfstandige toepassing. Met deze functie wordt de vermelding van de server in de systeemregistratiedatabase bijgewerkt en wordt de RegisterAll lidfunctie voor u aangeroepen, waarbij instantieregistratie wordt uitgevoerd.
Wanneer uw servertoepassing wordt gestart, moet u ervoor zorgen dat deze exemplaarregistratie kan uitvoeren. Instantieregistratie informeert de OLE-systeem-DLL's dat de server actief is en gereed is voor het ontvangen van aanvragen van containers. Er wordt geen vermelding toegevoegd aan de registratiedatabase. Voer exemplaarregistratie van de server uit door de ConnectTemplate lidfunctie aan te roepen die is gedefinieerd door COleTemplateServer. Hiermee wordt het CDocTemplate object verbonden met het COleTemplateServer object.
De ConnectTemplate functie heeft drie parameters: de CLSID van de server, een aanwijzer naar het CDocTemplate object en een vlag die aangeeft of de server meerdere exemplaren ondersteunt. Een miniserver moet meerdere exemplaren kunnen ondersteunen, dat wil gezegd, het moet mogelijk zijn dat meerdere exemplaren van de server tegelijkertijd worden uitgevoerd, één voor elke container. Geef daarom TRUE door voor deze vlag bij het starten van een miniserver.
Als u een miniserver schrijft, wordt deze per definitie altijd gestart door een container. U moet de opdrachtregel nog steeds parseren om te controleren op de optie /Insluiten. De afwezigheid van deze optie op de opdrachtregel betekent dat de gebruiker heeft geprobeerd de miniserver te starten als een zelfstandige toepassing. Als dit het geval is, registreert u de server bij de systeemregistratiedatabase en geeft u vervolgens een berichtvenster weer om de gebruiker te informeren de miniserver te starten vanuit een containertoepassing.
Zie ook
OLE
Servers
CWinApp::RunAutomated
CWinApp::RunEmbedded
COleTemplateServer-klasse