Dela via


Isolering av biblioteket för vanliga MFC-kontroller

Common Controls-biblioteket är nu isolerat i MFC, vilket gör att olika moduler (till exempel användar-DLL:er) kan använda olika versioner av Common Controls-biblioteket genom att ange versionen i sina manifest.

Ett MFC-program (eller användarkod som anropas av MFC) anropar Common Controls-biblioteks-API:er via omslutningsfunktioner med namnet AfxFunctionName, där FunctionName är namnet på ett Common Controls-API. Dessa omslutningsfunktioner definieras i afxcomctl32.h och afxcomctl32.inl.

Du kan använda makron AFX_COMCTL32_IF_EXISTS och AFX_COMCTL32_IF_EXISTS2 (definierade i afxcomctl32.h) för att avgöra om Common Controls-biblioteket implementerar ett visst API i stället för att anropa GetProcAddress.

Tekniskt sett gör du anrop till Common Controls-biblioteks-API:er via en omslutningsklass CComCtlWrapper (definieras i afxcomctl32.h). CComCtlWrapper ansvarar även för lastning och avlastning av comctl32.dll. MFC-modultillståndet innehåller en pekare till en instans av CComCtlWrapper. Du kan komma åt omslutningsklassen med hjälp av makrot afxComCtlWrapper .

Observera att anrop av Common Controls API direkt (inte använder MFC-omslutningsfunktionerna) från ett MFC-program eller användar-DLL fungerar i de flesta fall, eftersom MFC-programmet eller användar-DLL är bundet till det Common Controls-bibliotek som begärdes i manifestet). Själva MFC-koden måste dock använda omslutningen, eftersom MFC-kod kan anropas från användar-DLL:er med olika common controls-biblioteksversioner.