Поделиться через


Поддержка контекстов активации в состоянии модуля MFC

MFC создает контекст активации с помощью ресурса манифеста, предоставленного модулем пользователя. Дополнительные сведения о создании контекстов активации см. в следующих разделах:

Замечания

При чтении этих разделов пакета SDK для Windows обратите внимание, что механизм контекста активации MFC напоминает контекст активации пакета SDK для Windows, за исключением того, что MFC не использует API контекста активации пакета SDK для Windows.

Контекст активации работает в приложениях MFC, библиотеках DLL пользователей и библиотеках DLL расширений MFC следующим образом:

  • Приложения MFC используют идентификатор ресурса 1 для ресурса манифеста. В этом случае MFC не создает собственный контекст активации, но использует контекст приложения по умолчанию.

  • Библиотеки DLL пользователей MFC используют идентификатор ресурса 2 для своего ресурса манифеста. Здесь MFC создает контекст активации для каждой библиотеки DLL пользователя, поэтому разные библиотеки DLL пользователей могут использовать разные версии одной библиотеки (например, библиотеку Common Controls).

  • Библиотеки DLL расширений MFC полагаются на их размещающие приложения или пользовательские библиотеки DLL, чтобы определить их контекст активации.

Хотя состояние контекста активации можно изменить с помощью процессов, описанных в разделе "Использование API контекста активации", механизм контекста активации MFC может быть полезным при разработке архитектур подключаемых модулей на основе DLL, когда трудно (или невозможно) вручную переключать состояние активации до и после отдельных вызовов внешних плагинов.

Контекст активации создается в AfxWinInit. Он уничтожается в деструкторе AFX_MODULE_STATE . Дескриптор контекста активации хранится в AFX_MODULE_STATE. (AFX_MODULE_STATE описано в AfxGetStaticModuleState.)

Макрос AFX_MANAGE_STATE активирует и деактивирует контекст активации. AFX_MANAGE_STATE включен для статических библиотек MFC, а также библиотек DLL MFC, чтобы разрешить выполнение кода MFC в соответствующем контексте активации, выбранном библиотекой DLL пользователя.

См. также

Контексты активации
Манифесты приложения
манифесты сборки
AfxWinInit
AfxGetStaticModuleState
AFX_MANAGE_STATE