Freigeben über


Isolierung der MFC-Bibliothek für Standardsteuerelemente

Die Bibliothek für allgemeine Steuerelemente wird jetzt in MFC isoliert und verschiedene Module (z Benutzer DLLs) um unterschiedliche Versionen der Bibliothek für allgemeine Steuerelemente zu verwenden, indem die Version in ihren Manifesten angibt.

Eine MFC-Anwendung (oder der Benutzercode aufgerufen von MFC) macht Aufrufe der Bibliothek für allgemeine Steuerelementes-APIs Wrapper von Funktionen mit dem Namen AfxFunctionName, wobei FunctionName der Name einer API der gängigen Steuerelementen ist. Diese werden in afxcomctl32.h Wrapperfunktionen und in afxcomctl32.inl definiert.

Sie können die AFX_COMCTL32_IF_EXISTS und AFX_COMCTL32_IF_EXISTS2-Makros verwenden (in afxcomctl32.h), um zu bestimmen, ob die Bibliothek für allgemeine Steuerelemente eine bestimmte API implementiert, anstatt, GetProcAddress aufzurufen.

Technisch machen Sie Aufrufe der Bibliothek für allgemeine Steuerelementes-APIs durch eine Wrapperklasse, CComCtlWrapper (definiert in afxcomctl32.h). CComCtlWrapper ist ebenfalls für das Laden und Entladen von comctl32.dll zuständig. Der MFC-Modulzustand enthält einen Zeiger auf eine Instanz von CComCtlWrapper. Sie können auf die Wrapperklasse mithilfe des Makros afxComCtlWrapper zugreifen.

Beachten Sie, dass der aufrufende API allgemeinen Steuerelemente direkt (ohne Verwendung des MFC-Wrappers funktioniert), von einer MFC-Anwendung oder Benutzer aus einer DLL in den meisten Fällen funktioniert, da die MFC-Anwendung oder die Benutzer der Bibliothek DLL für allgemeine Steuerelemente gebunden wird, Anwendungstest sie in ihrem Manifest) an. Allerdings muss der MFC-Code selbst die Wrapper verwenden, da MFC-Code kann von Benutzer DLLs mit verschiedenen Bibliothek für allgemeine Steuerelementes-Versionen aufgerufen wird.