기본 클래스 팩터리 및 집계 모델 변경
ATL은 CComCoClass를 사용하여 개체에 대한 기본 클래스 팩터리 및 집계 모델을 정의합니다. CComCoClass
는 다음 두 개의 매크로를 지정합니다.
DECLARE_CLASSFACTORY 클래스 팩터리를 CComClassFactory로 선언합니다.
클래스 정의에 다른 매크로를 지정하여 이러한 기본값 중 하나를 재정의할 수 있습니다. 예를 들어 CComClassFactory2 대신 CComClassFactory
사용하려면 DECLARE_CLASSFACTORY2 매크로를 지정합니다.
class ATL_NO_VTABLE CMyClass2 :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMyClass2, &CLSID_MyClass>,
public IDispatchImpl<IMyClass, &IID_IMyClass, &LIBID_NVC_ATL_COMLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public IDispatchImpl<IMyDualInterface, &__uuidof(IMyDualInterface), &LIBID_NVC_ATL_COMLib, /* wMajor = */ 1, /* wMinor = */ 0>
{
public:
DECLARE_CLASSFACTORY2(CMyLicense)
// Remainder of class declaration omitted
클래스 팩터리를 정의하는 다른 두 매크로는 DECLARE_CLASSFACTORY_AUTO_THREAD DECLARE_CLASSFACTORY_SINGLETON.
또한 ATL은 메커니즘을 typedef
사용하여 기본 동작을 구현합니다. 예를 들어 DECLARE_AGGREGATABLE 매크로는 호출_CreatorClass
된 형식을 정의하는 데 사용합니다typedef
. 이 형식은 ATL 전체에서 참조됩니다. 파생 클래스에서 기본 클래스 typedef
와 동일한 이름을 사용하는 경우 ATL에서 정의를 사용하고 기본 동작을 재정의 typedef
합니다.