Izolacja biblioteki formantów wspólnych MFC
Biblioteka Wspólnych kontrolek jest teraz izolowana w MFC, umożliwiając korzystanie z różnych modułów (takich jak biblioteki DLL użytkowników) przez określenie wersji w manifestach.
Aplikacja MFC (lub kod użytkownika wywoływany przez MFC) wykonuje wywołania interfejsów API biblioteki Common Controls za pośrednictwem funkcji otoki o nazwie Afx
FunctionName, gdzie FunctionName jest nazwą interfejsu API wspólnych kontrolek. Te funkcje otoki są zdefiniowane w afxcomctl32.h i afxcomctl32.inl.
Możesz użyć makr AFX_COMCTL32_IF_EXISTS i AFX_COMCTL32_IF_EXISTS2 (zdefiniowanych w pliku afxcomctl32.h), aby określić, czy biblioteka Common Controls implementuje określony interfejs API zamiast wywoływać metodę GetProcAddress.
Technicznie wykonujesz wywołania interfejsów API biblioteki wspólnych kontrolek za pośrednictwem klasy CComCtlWrapper
otoki (zdefiniowanej w afxcomctl32.h). CComCtlWrapper
jest również odpowiedzialny za ładowanie i zwalnianie pliku comctl32.dll. Stan modułu MFC zawiera wskaźnik do wystąpienia klasy CComCtlWrapper
. Dostęp do klasy otoki można uzyskać za pomocą makra afxComCtlWrapper
.
Należy pamiętać, że bezpośrednie wywoływanie interfejsu API wspólnych kontrolek (nie przy użyciu funkcji otoki MFC) z aplikacji MFC lub biblioteki DLL użytkownika będzie działać w większości przypadków, ponieważ aplikacja MFC lub biblioteka DLL użytkownika jest powiązana z biblioteką common controls żądaną w manifeście. Jednak sam kod MFC musi używać otoki, ponieważ kod MFC może być wywoływany z bibliotek DLL użytkownika z różnymi wersjami bibliotek common controls.