ATL(Active Template Library)
- C++ template을 사용하여 작성된 클래스 라이브러리.
※ Template은 형틀(뼈대)이라는 뜻이기 때문에 <int>와 같이 type을 지정해 주어야 컴파일하여 instance화 될 수 있다. -> 필요한 부분만 instance화 되기 때문에 가볍다.
- IUnknown, IClassFactory 등에 인터페이스에 대한 코드 구현
- 작고 빠르고 확장성을 갖는 COM 개체 구현
※ MFC로 작성된 OCX파일은 관련 라이브러리도 같이 배포해야 한다.
(UI는 빈약, 통신용, 암호화 프로그램에 적합)
※ ATL라이브러리는 자동으로 레지스트리에 등록한다.
ATL 단순 개체 마법사
쓰레딩 모델 : 단일, 아파트...
이중(dual) : 자동화를 지원하는가?
집합체 : aggregatable이면 예, 아니면 아니요. 전용(aggregation만 한다.)
interface IAddBack : IDispatch{
// 원하는 메소드들을 정의한다.
};
coclass : 컴포넌트 객체에 대한 지원되는 인터페이스에 대한 목록을 제공.
ATL Base클래스 헤더
class ATL_NO_VTABLE CAddBack :
public CComObjectRootEx<CComSingleThreadModel>, // Threading model
public CComCoClass<CAddBack, &CLSID_AddBack>, // ClassFactory
public IDispatchImpl<IAddBack, &IID_IAddBack, &LIBID_ATLtestLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
// 자동화 객체 구현 클래스
...(생략)
BEGIN_COM_MAP(CAddBack) // Query Interface
COM_INTERFACE_ENTRY(IAddBack)
COM_INTERFACE_ENTRY(IDispatch) // 클라이언트는 VB로도 작성 가능.(자동화 인터페이스 등록)
END_COM_MAP()
...(생략)
OBJECT_ENTRY_AUTO(__uuidof(AddBack), CAddBack) // CLSID가 맞으면 클래스를 instance화 한다.
※ rgs : 레지스트리 등록할 때 사용하는 파일.
'컴퓨터 공부 > COM&ActiveX' 카테고리의 다른 글
[6월 16일 1교시] 자동화(automation) (0) | 2009.06.16 |
---|---|
[6월 15일 3교시] ATL2 (0) | 2009.06.15 |
[6월 15일 1교시] tlb를 통한 COM 객체 생성 (0) | 2009.06.15 |
[6월 12일 3교시] Visual C++ and COM (0) | 2009.06.12 |
[6월 11일 3교시] Containment & Aggregation (0) | 2009.06.11 |