Dela via


Stöd för aktiveringskontexter i MFC-modultillståndet

MFC skapar en aktiveringskontext med hjälp av en manifestresurs som tillhandahålls av användarmodulen. Mer information om hur aktiveringskontexter skapas finns i följande avsnitt:

Anmärkningar

När du läser dessa Windows SDK-ämnen bör du tänka på att mekanismen för MFC-aktiveringskontext liknar Windows SDK-aktiveringskontexten, förutom att MFC inte använder Windows SDK-aktiveringskontext-API:et.

Aktiveringskontexten fungerar i MFC-program, användar-DLL:er och DLL:er för MFC-tillägg på följande sätt:

  • MFC-program använder resurs-ID 1 för sin manifestresurs. I det här fallet skapar MFC inte en egen aktiveringskontext, utan använder standardprogramkontexten.

  • MFC-användar-DLL:er använder resurs-ID 2 för sin manifestresurs. Här skapar MFC en aktiveringskontext för varje användar-DLL, så att olika användar-DLL:er kan använda olika versioner av samma bibliotek (till exempel common controls-biblioteket).

  • DLL:er för MFC-tillägg förlitar sig på sina värdprogram eller användar-DLL:er för att upprätta sin aktiveringskontext.

Även om aktiveringskontexttillståndet kan ändras med hjälp av de processer som beskrivs under Använda API:et för aktiveringskontext kan det vara användbart att använda MFC-aktiveringskontextmekanismen när du utvecklar DLL-baserade plugin-arkitekturer där det inte är enkelt (eller inte möjligt) att manuellt växla aktiveringstillstånd före och efter enskilda anrop till externa plugin-program.

Aktiveringskontexten skapas i AfxWinInit. Det förstörs i destruktorn AFX_MODULE_STATE. En aktiveringskontexthandtag sparas i AFX_MODULE_STATE. (AFX_MODULE_STATE beskrivs i AfxGetStaticModuleState.)

Det AFX_MANAGE_STATE makrot aktiverar och inaktiverar aktiveringskontexten. AFX_MANAGE_STATE är aktiverat för statiska MFC-bibliotek, samt MFC-DLL:er, så att MFC-kod kan köras i rätt aktiveringskontext som valts av användar-DLL:n.

Se även

Aktiveringskontexter
Applikationsmanifest
Sammansättningsmanifest
AfxWinInit
AfxGetStaticModuleState
AFX_MANAGE_STATE