Active X 이름 : 김 수 종 학번 : 2006233005
Active X컨트롤이란 Active X 컨트롤은 독립된 사용자 인터페이스를 갖는 COM 서버의 일종입니다. 예를 들면, 달력 컨트롤, 시계 컨트롤, 볼륨 조절 컨트롤, 등을 Active X 컨트롤로 만들 수가 있습니다. Active X컨트롤은 Visual C++로 만든 프로그램 뿐 아니라 다른 개발 도구에서도 쉽게 가져다 쓸 수 있으며 웹 페이지에도 끼워 넣을 수 있다.
Active X의 삼총사 Active X 컨트롤의 기능은 Property, Method, Event 이렇게 세 가지에 의해 결정됩니다. Property를 설정하거나 Method를 호출함으로 써 Active X 컨트롤의 동작을 제어할 수 있고, 이벤트 를 발생시킴으로써 자신에게 어떤 일이 일어났는지 컨테이너에게 알릴 수 있다. Active X를 만들 때는 Property, Method, Event를 이용하여 모든 제어가 가능하게 해야 한다. 사용자 정의와 스톡 Font 또는 Color 같은 속성들을 일관성 있게 하기 위한 것이다. - Stock Property - Stock Method - Stock Event
Stock Property
Stock Method Stock Event
Ambient Property의 예(ActiveMovie 컨트롤 Property) BackColor Ambient Property는 보통 Property와는 반대로 컨테이너가 Active X컨트롤에게 제공하는 프로퍼티 입니다. 이를 이용하면 컨테이너 안에서 더 잘 조화를 이루는 Active X 컨트롤을 만들 수 있다. Ambient Property의 예(ActiveMovie 컨트롤 Property) BackColor 컨테이너 색상 DisplayName 에러 메시지 텍스트 Font 컨테이너의 폰트설정 ForeColor 컨테이너의 전경색 ScaleUnit 컨테이너에서의 좌표 TextAlign 텍스트 정렬
ActiveMovie의 Property 위 그림처럼 속성값만 바꾸어주면 쉽게 설정이 가능하다. - Property는 ActiveX 컨트롤과 같은 DLL 또는 OCX파일에 저장되지 만, 각 Property 페이지는 자체적으로 CLSID를 갖는 독립된 COM 오브젝트이다.
ActiveX 컨트롤을 위한 MFC 클래스 MFC는 ActiveX 컨트롤 제작에 필요한 클래스를 제공하는데, 이들 클래스에는 수많은 표준 COM인터페이스가 구현되어 있다. - 단순히, 클래스에서 파생클래스를 만들어 “Property”, ”Method”, ”Event”만 신경 써주면 된다. COleContorlModule 클래스 : ActiveX컨트롤에 있어 MFC와 비교한다면 CwinApp에 해당된다. ActiveX를 구동시키는 역할을 한다. ActiveX 컨트롤을 초기화 하거나 정리하는 작업을 한다. COleControl 클래스 : CWnd 클래스의 파생클래스로 일반적인 윈도우 기능을 수행. ActiveX에 관련된 COM인터페이스, Stock Property, Stock Method, Stock Event 의 기능을 모두 수행. COlePropertyPage 클래스 : Property 기능을 하기 위해 IPropertyPage 인터페이스 Class
COleControl Class의 중요 두 멤버 함수 COleControl에는 매우 많은 멤버함수들을 가지고 있다. - 아래 MSDN 참조 (http://msdn2.microsoft.com/en-us/library/7kcteb98(VS.80).aspx) (기본 멤버 함수) OnDraw ActiveX컨트롤이 다시 그려져야 할 때 DoDropExchange Property를 저장하거나 읽어오기 위해 호출 (Ambient 멤버 함수) AmbientXXX Ambient Property (Ex: AmbientBackColor) FireXXX Stock Event (Ex: FireClick) GetXXX Stock Property (Ex: GetBackColor) DoClick Stock Method InvalidateContorl 컨트롤 다시 그리기..
MFC에서 ActiveX Control 생성 해당 Project에 필요한 Option 설정 후, Finish 클릭.
Project 생성 후 기본적으로 3개의 Class생성 됨. - CCircleApp : COleControlModule의 파생Class로 써 컨트롤을 구동한다. - CCricleCtrl : COleControl의 파생Class 이다. Property, Method, Event의 모든 기능을 수행한다. - CCirclePropPage : COlePropertyPage의 파생Class로 하나의 Property페이지를 관리한다.
컴파일 및 실행하기.. 실행 파일을 입력하는 대화상자가 뜸. 이는 ActiveX가 단독으로 실행을 할 수가 없기 때문이다. - ActiveX Control Test Container선택 디버깅 정보가 없음을 알리는 대화상자
Test ActiveX에서 컨트롤 추가하기..
사용자 정의 Property 추가.. Add Property 클릭하면 위처럼 대화상자가 나타난다. 이곳에 멤버변수를 기재 한다.
Stock Property 추가 하기.. 모든 Property를 추가 한 경우.. - _DCirCle 쪽에 추가한 변수 생성 됨. - CirCleCtrl.cpp쪽에도 자동 추가됨.
Method 추가 하기…(Property와 거의 동일)
Event 추가 하기…
Property, Method, Event Test 하기..(간단한 시연)
Circle Example를 HTML에 추가하기.. <HEAD> <TITLE>ActiveX control test page for object CircleCtrl</TITLE> </HEAD> <BODY> <OBJECT id=CircleCtrl width=300 height=300 classid=CLSID:DA379CA5-986E-42B0-B937-5445E7995542> <PARAM NAME="Caption" VALUE="Click Here"> <PARAM NAME="ForeColor" VALUE="16711680"> <PARAM NAME="BackColor" VALUE="16777215"> <PARAM NAME="FlashColor" VALUE="65535"> </OBJECT> <SCRIPT LANGUAGE="VBScript"> <!-- Sub CircleCtrl_ClickInside(x, y) CStr str str = "Click (" & x & ", " & y & ")" Document.title = str end Sub --> </SCRIPT> </BODY> </HTML>
ActiveX를 이용한 Movie Maker (간단한 Example 시연)
수고 하셨습니다.