次の方法で共有


MFC コモン コントロール ライブラリの分離

コモン コントロール ライブラリは、 MFC 内でマニフェストのバージョンを指定することにより、分離し、コモン コントロール ライブラリの異なるバージョンを使用するように異なるモジュール (ユーザーの DLL など)します。

FunctionName がコモン コントロール API の名前である場合に MFC アプリケーション (または MFC によって呼び出されるユーザー コード AfxFunctionNameというラッパー関数によってコモン コントロール ライブラリの API に)呼び出しを行います。これらのラッパー関数は afxcomctl32.h と afxcomctl32.inl で定義されます。

AFX_COMCTL32_IF_EXISTSAFX_COMCTL32_IF_EXISTS2 のマクロができます (コモン コントロール ライブラリが GetProcAddressを呼び出す代わりにある API を実行するかどうかを判断するためにで使用 afxcomctl32.h で定義)です。

厳密には、ラッパー クラスを通じてコモン コントロール ライブラリの API、 CComCtlWrapper に呼び出しを行い (afxcomctl32.h)で定義されます。CComCtlWrapper は comctl32.dll の読み込みとアンロードにも使用されます。MFC のモジュール状態は CComCtlWrapperのインスタンスへのポインターが格納されます。afxComCtlWrapper マクロを使用して、ラッパー クラスにアクセスできます。

MFC アプリケーションからコモン コントロール API (ない MFC ラッパー関数を使用して直接呼び出すとは、ユーザーの DLL は MFC アプリケーションまたはユーザーの DLL がマニフェストに要求した)コモン コントロール ライブラリにバインドされるため、ほとんどの場合です。ただし、 MFC コードが別のコモン コントロール ライブラリ バージョンのユーザーの DLL から呼び出される可能性があるため、 MFC コード自体はラッパーを使用する必要があります。