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


Поддержка контекстов активации в состоянии модуля 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