블로그 이미지
Kanais
Researcher & Developer 퍼즐을 완성하려면 퍼즐 조각들을 하나 둘씩 맞춰나가야 한다. 인생의 퍼즐 조각들을 하나 둘씩 맞춰나가다 보면 인생이란 퍼즐도 완성되는 날이 오려나...?

calendar

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Notice

2015. 5. 11. 16:14 Programming/COM

이글은 '선문비트 고급과정'에서 강의받은 내용을 토대로 작성하였으며, 비트 교육센터 자료를 참고하여 올린내용입니다. 문제가 될시 삭제가 될 수 있습니다.

작성날짜    : 2011-03-22


ATL ActiveX

 

Visual Basic 으로 구현 할 수도 있다.

 

MFC Library와 C++의 차이점.

- 다중 상속하지 않음.

- Template 을 사용 하지 않음

 

CComControl

- CWindowImpl의 기능

- 새로운 윈도우를 생성, 기존의 윈도우를 슈퍼 클래싱할 수 있는 구현 코드 제공

고유 기능

- 컨트롤의 윈도우 생성

- 컨트롤의 속성이 변경되기 전과 후에 컨테이너에게 그 사실을 알려주는 함수제공

컨테이너가 지원하는 IOleInPlaceSiteWindowless, IDataAdviseHolder, IOleAdviseHolder, IOleClientSite, IAdviseSink 인터페이스와 환경 속성을 제공하는 IDispatch 인터페이스 포인터를 관리

 

수퍼 클래싱과 서브 클래싱

하나의 길이 있다고 가정할 때.

서브 클래싱 : 샛길을 만들어 내는 방법.

수퍼 클래싱 : 아예 새로운 길을 만드는 방법.

 

ATL 인터페이스 클래스

- ATL Object Wizard의 Controls 카테고리

- Full version

- 모든 컨테이너에서 사용가능

- Full Control, HTML Control, Composite Control

- Lite version (인터넷의 특화)

- 인터넷 익스플로어에서 사용가능

- Lite Control, Lite HTML Control, Lite Composite Control

컨트롤의 인터페이스 구현 코드 제공

- interfacenameImpl

 

Lite Control 유형이 지원하는 인터페이스

지원 인터페이스

설  명

IOleObject

컨트롤이 포함개체로서 컨테이너와 통신할 수 있는 기능 제공

IOleInPlaceActiveObject

IOleObjecImpl 클래스가 이 인터페이스의 디폴트 구현 코드 제공 컨트롤이 컨테이너 안에서 활성화 상태가 될 때 컨테이너와  통신할 수 있는 기능 제공. IOleInPlaceActiveObjectImpl 클래스가 이 인터페이스의 디폴트 구현 코드 제공

IOleContol

키 입력, 환경 속성 등에 대하여 컨트롤이 컨테이너와 통신 할 수 있는 기능 제공. IOleControlImpl 클래스 디폴트 구현 코드 제공

IPersistStreamInit

컨테이너가 하나의 스트림 안에 속성의 초기값과 속성값 저장을 컨트롤에게 요청할 수 있게 함. IPersistStreamInitInmp 클래스 디폴트 구현 코드 제공

IOleInPlaceObject

컨트롤의 활성화/비활성화를 관리하며, 컨트롤이 나타나야 하는 영역 크기 결정

IOleInPlaceObjectWindowless

윈도우 없는 컨트롤이 윈도우 메시지를 받고, 마우스 끌어놓기에 참여할 수 있도록 한다. IOleInPlaceObjectWindowlessImpl 클래스는 이 Interface와  IOleInPlaceObject 의 디폴트 구현 코드 제공

IViewObject

IViewObject2

IViewObjectEx

IViewObject와 IViewObject2 는 컨트롤이 자신을 컨테이너 안에 나타내는 기능을 제공. IViewObjectEx는 윈도우 없는 컨트롤이 그리기 최적화를 할 수 있는 기능 제공. IViewObjectImpl 디폴트 코드 제공

 

ATL 윈도우 클래스

- CWindow

윈도우 핸들 저장 데이터 멤버

- m_hWnd

윈도우 관련 Wind32 API 함수 캡슐화 메소드

- CWindowImpl, CDialogImpl 클래스를 파생

- CWindowImpl, CDialogImpl

- ATL에서 윈도우와 다이얼로그를 생성할 수 있게 해줌

메시지 맵 매커니즘 지원

BEGIN_MSG_MAP(CMyWindow)

        MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown)

END_MSG_MAP()

MessageMap : 함수포인터 배열

 

 

LRESULT MessageHandlerName(

UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);

BOOL &bHandled

        TRUE :  메시지가처리된경우

        FALSE   : 메시지가처리되지않은경우로, 다른메시지함수를찾는다.

 

 - 다른 메시지 맵으로도 전달 기능

BEGIN_MSG_MAP(CMyWindow)

        MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown)

        CHAIN_MSG_MAP(CAnotherWindow)

END_MSG_MAP()

CHAIN_MSG_MAP(메시지맵이정의된다른클래스명)

 

 

'Programming > COM' 카테고리의 다른 글

[COM] ActiveX Control 배포  (0) 2015.05.11
[COM] 복합 컨트롤  (0) 2015.05.11
[COM] ActiveX Control(Graph)  (0) 2015.05.11
[COM] ATL / COM  (0) 2015.05.11
[COM] IDL  (0) 2015.05.11
posted by Kanais