Prise en charge des contextes d'activation dans l'état du module MFC
MFC crée un contexte d’activation à l’aide d’une ressource de manifeste fournie par le module utilisateur. Pour plus d’informations sur la création des contextes d’activation, consultez les rubriques suivantes :
Notes
Lors de la lecture de ces rubriques du Kit de développement logiciel (SDK) Windows, notez que le mécanisme de contexte d’activation MFC ressemble au contexte d’activation du SDK Windows, sauf que MFC n’utilise pas l’API de contexte d’activation du SDK Windows.
Le contexte d’activation fonctionne dans les applications MFC, les DLL utilisateur et les DLL d’extension MFC de la manière suivante :
Les applications MFC utilisent l’ID de ressource 1 pour leur ressource de manifeste. Dans ce cas, le MFC ne crée pas son propre contexte d’activation, mais utilise le contexte d’application par défaut.
Les DLL utilisateur MFC utilisent l’ID de ressource 2 pour leur ressource manifeste. Ici, MFC crée un contexte d’activation pour chaque DLL utilisateur, afin que différentes DLL utilisateur puissent utiliser différentes versions des mêmes bibliothèques (par exemple, la bibliothèque Common Controls).
Les DLL d’extension MFC s’appuient sur leurs applications d’hébergement ou dll utilisateur pour établir leur contexte d’activation.
Bien que l’état du contexte d’activation puisse être modifié à l’aide des processus décrits dans l’API Contexte d’activation, l’utilisation du mécanisme de contexte d’activation MFC peut être utile lors du développement d’architectures de plug-in basées sur DLL où il n’est pas facile (ou non possible) de basculer manuellement l’état d’activation avant et après les appels individuels aux plug-ins externes.
Le contexte d’activation est créé dans AfxWinInit. Il est détruit dans le AFX_MODULE_STATE
destructeur. Un handle de contexte d’activation est conservé dans AFX_MODULE_STATE
. (AFX_MODULE_STATE
est décrit dans AfxGetStaticModuleState.)
La macro AFX_MANAGE_STATE active et désactive le contexte d’activation. AFX_MANAGE_STATE
est activé pour les bibliothèques MFC statiques, ainsi que pour les DLL MFC, afin d’autoriser l’exécution du code MFC dans le contexte d’activation approprié sélectionné par la DLL utilisateur.
Voir aussi
Contextes d’activation
Manifestes d’application
Manifestes d’assembly
AfxWinInit
AfxGetStaticModuleState
AFX_MANAGE_STATE