Unterstützung für Aktivierungskontexte im MFC-Modulstatus

MFC erstellt einen Aktivierungskontext mithilfe einer Manifestressource, die vom Benutzermodul bereitgestellt wird. Weitere Informationen zur Erstellung von Aktivierungskontexten finden Sie in den folgenden Themen:

Hinweise

Beachten Sie beim Lesen dieser Windows SDK-Themen, dass der MFC-Aktivierungskontext dem Windows SDK-Aktivierungskontext ähnelt, außer dass MFC die Windows SDK-Aktivierungskontext-API nicht verwendet.

Der Aktivierungskontext funktioniert in MFC-Anwendungen, Benutzer-DLLs und MFC-Erweiterungs-DLLs wie folgt:

  • MFC-Anwendungen verwenden die Ressourcen-ID 1 für ihre Manifestressource. In diesem Fall erstellt der MFC keinen eigenen Aktivierungskontext, verwendet jedoch den Standardanwendungskontext.

  • MFC-Benutzer-DLLs verwenden die Ressourcen-ID 2 für ihre Manifestressource. Hier erstellt MFC einen Aktivierungskontext für jede Benutzer-DLL, sodass unterschiedliche Benutzer-DLLs unterschiedliche Versionen derselben Bibliotheken verwenden können (z. B. die Bibliothek für allgemeine Steuerelemente).

  • MFC-Erweiterungs-DLLs basieren auf ihren Hostinganwendungen oder Benutzer-DLLs, um ihren Aktivierungskontext einzurichten.

Obwohl der Aktivierungskontextstatus mithilfe der unter Verwendung der Aktivierungskontext-API beschriebenen Prozesse geändert werden kann, kann die Verwendung des MFC-Aktivierungskontextmechanismus hilfreich sein, wenn dll-basierte Plug-In-Architekturen entwickelt werden, bei denen es nicht einfach (oder nicht möglich) ist, den Aktivierungszustand vor und nach einzelnen Aufrufen externer Plug-Ins manuell zu wechseln.

Der Aktivierungskontext wird in AfxWinInit erstellt. Es wird im AFX_MODULE_STATE Destruktor zerstört. Ein Aktivierungskontexthandle wird in AFX_MODULE_STATEbeibehalten. (AFX_MODULE_STATE wird in AfxGetStaticModuleState beschrieben.)

Das AFX_MANAGE_STATE Makro aktiviert und deaktiviert den Aktivierungskontext. AFX_MANAGE_STATE ist für statische MFC-Bibliotheken sowie MFC-DLLs aktiviert, damit MFC-Code im richtigen Aktivierungskontext ausgeführt werden kann, der von der Benutzer-DLL ausgewählt wird.

Siehe auch

Aktivierungskontexte
Anwendungsmanifeste
Assemblymanifeste
AfxWinInit
AfxGetStaticModuleState
AFX_MANAGE_STATE