MFC Active 생성
1. Workspace 생성
MFC ActiveX control wizard를 선택.
2. Property 생성(메뉴 View > ClassWizard)
1) ClassWizard의 Automation tab에서 선택
2) Class name에서 Control class 선택(...Ctrl)
3) (Add Property...) 버튼 클릭
3) External name: ActiveX를 사용하는 프로그램에서 사용할 property name
4) Type: property type
5) Variable name: ActiveX 내부에서 사용할 property 변수명
6) Notification function: property 값이 변경되면 실행되는 함수. 별로 사용하지 않는다.
7) Implementation:
- Member variable: 외부에서 ActiveX.propertyName = value 형태로 사용하는 방법
- Get/Set methods: GetPropertyName(), SetPropertyName() 형태로 사용하는 방법
☞ 이렇게 하면,
Conrol class에 해당 member 변수가 생성되는데, 변수명은
Variable name에 설정된 이름으로 생성된다.
3. Method 생성
1) ClassWizard의 Automation tab에서 선택
2) Class name에서 Control class 선택(...Ctrl)
3) (Add Method...) 버튼 클릭
4) External name: ActiveX를 사용하는 프로그램에서 사용할 method 이름
5) Internal name: ActiveX 내부에서 사용할 때 사용할 이름
6) Return type: method를 호출했을 때, 결과로 넘겨줄 값의 type
7) Parameter list: method에 넘겨줄 parameter와 그 type
☞ 이렇게 하면,
Conrol class에 해당 method가 member함수로 생성되는데,
함수 이름은 "Internal name"으로 생성된다.
이 함수에 필요한 logic을 코딩하면 되며,
ActiveX를 사용하는 프로그램에서 "External name"으로 설정된
함수를 call하면, ActiveX에서는 "Internal name"으로 설정된
함수가 실행된다.
4. Event 생성
1) ClassWizard의 ActiveX Events tab 선택
2) Class name: Control class 선택(...Ctrl)
3) (Add Event...) 버튼 클릭
4) External name: ActiveX를 사용하는 program에서 사용할 event name
5) Internal name: ActiveX 내부에서 사용할 event name
6) Parameter list: event도 하나의 함수다. 이 함수에 넘겨줄 parameter와
그 type을 정의한다.
☞ 이렇게 하면,
Conrol class의 Header file에 "Internal name"으로 설정된 void type의 함수가
"AFX_EVENT(CSamAxCtrl)" event map으로 생성된다.
ActiveX의 원하는 곳에서 이 함수를 call하면,
ActiveX를 사용하는 프로그램에서 해당 event가 발생하게 된다.
5. 필요한 code 작성
4번까지 하면, 기본적으로 ActiveX control이 작성된 것이다.
여기에 필요한 logic을 작성한 다음 compile하면 ocx 파일이 생성된다.
6. CLSID 알아내기
만들어진 ActiveX control을 웹에서 사용하기 위해서는 기본적으로 CLSID를 알아야 한다.
이것은 VC++의 FileView에서 ".odl" 파일을 살펴보면 알 수 있다.
".odl" 파일의 맨 하단을 보면 다음과 같은 주석을 볼 수 있다.
// Class information for CExActiveX2Ctrl
그리고, 그 밑에 아래와 같은 코드를 볼 수 있다.
[ uuid(4AA8A54C-8F74-4F9F-8D3C-BD1079A73AD8),
helpstring("ExActiveX2 Control"), control ]
위 코드에서 "uuid"가 바로 CLSID 이다.
참고 : http://cafe.naver.com/swnara/145
'IT-개발,DB' 카테고리의 다른 글
[개발/DAQ] 아날로그 입력 채널에서 예상하지 못한 전압값 (floating, crosstalk 등) 해결법 (0) | 2015.11.28 |
---|---|
[개발/VC++] ShellExecuteEx, CreateProcess, 연결된 프로그램, 디폴트 브라우저 (0) | 2015.11.09 |
[개발/javascript] 미디어 끌어오기 (0) | 2015.11.09 |
[개발/디자인] RGB 색상표 (0) | 2015.10.26 |
[개발/VC++] IE 보호 모드에서 비보호 모드 프로세스 실행 (0) | 2015.10.08 |
댓글