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


Изоляция библиотеки общими элементами управления MFC

Библиотека общих элементов управления теперь изолирована в составе MFC, что различные модули (в виде библиотеки DLL пользователя) для использования различных версий библиотеки общих элементов управления с указанием версии в манифестах.

Приложения MFC (MFC) или код пользователя с именем звонят к API библиотеки общих элементов управления до Afx с именем функция-оболочками FunctionName, где FunctionName имя API общих элементов управления.Эти функция-оболочки определены в afxcomctl32.h и afxcomctl32.inl.

Можно использовать макросы AFX_COMCTL32_IF_EXISTS и AFX_COMCTL32_IF_EXISTS2 (определяются в afxcomctl32.h) для определения, реализуется ли библиотека общих элементов управления некоторые API, а не вызывать GetProcAddress.

Технически этот класс-оболочку для вызова через API, CComCtlWrapper библиотеки общих элементов управления (заданный в afxcomctl32.h).CComCtlWrapper также отвечает за загрузку и выгрузку comctl32.dll.Состояние модуля MFC содержит указатель на экземпляр CComCtlWrapper.Можно получить доступ к класс-оболочка использование макроса afxComCtlWrapper.

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