Izolacja biblioteki formantów wspólnych MFC

Biblioteki wspólnej kontroli jest teraz na białym tle w ramach MFC, pozwalając różnych modułów (na przykład użytkownik bibliotek DLL) aby używać różnych wersji biblioteki wspólnej kontroli przez określenie wersji w ich manifestach.

Aplikacja MFC (lub kod użytkownika wywołana przez MFC) sprawia, że wywołania biblioteki formanty standardowe interfejsy API za pomocą funkcji otoki o nazwie AfxFunctionName, gdzie FunctionName to nazwa wspólna API formantów.Te funkcje otoki są zdefiniowane w afxcomctl32.h i afxcomctl32.inl.

Można użyć AFX_COMCTL32_IF_EXISTS i AFX_COMCTL32_IF_EXISTS2 makra (w rozumieniu afxcomctl32.h) do określenia, czy biblioteka formanty implementuje niektóre API zamiast telefonicznej GetProcAddress.

Technicznie rzecz biorąc, prowadzić rozmowy wspólnych interfejsów API Biblioteka formantów za pomocą klasy otoki, CComCtlWrapper (które zdefiniowano w afxcomctl32.h).CComCtlWrapperjest również odpowiedzialny za załadunek i rozładunek pliku Comctl32.dll.Stan modułu MFC zawiera wskaźnik do wystąpienia CComCtlWrapper.Można uzyskać dostęp za pomocą klasy otoki afxComCtlWrapper makro.

Należy zauważyć, że powołanie Wspólnego API kontroli bezpośrednio (bez użycia funkcji otoki biblioteki MFC) z MFC aplikację lub użytkownika DLL będzie działać w większości przypadków, ponieważ aplikacja MFC lub użytkownika DLL jest związana z biblioteki wspólnej kontroli w manifeście Rada zażądała).Jednakże sam kod MFC ma używać otoki, ponieważ kod MFC może być wywołana z bibliotek DLL użytkownika z różnymi wersjami biblioteki wspólnej kontroli.