ActiveX 개발 KnowHow (C++ Builder 6.0)

Slides:



Advertisements
Similar presentations
1. 기관별 맞춤형 집중교육 : 실습 및 개인별 집중지도    1. 기관별 맞춤형 집중교육 : 실습 및 개인별 집중지도 (상설) 기관별 맞춤형 교육 - 당 교육기관에서.
Advertisements

Efl을 이용한 타이젠 네이티브 웨어러블 앱 만들기
모바일 홈페이지 제작 발 표 일 : 2012년 11월 28일 발 표 자 : 07’ 김 동 희.
2장 닷넷 프레임워크.
C++ Espresso 제1장 기초 사항.
인천시 부평구 청천동 425번지 우림라이온스 B동 307호
홈페이지 자동 구축 솔루션 K2 Web WIZARD 2.6 관리자 메뉴얼
컴포넌트 (Component)
12장. JSP에서 자바빈 활용 제12장.
7. JavaBeans 프로그래밍 JavaBeans JavaBeans 만들기 빈을 이용한 회원가입 양식 작성하기 빈 작성
Java Presentation 중간 시험2 풀이
MelOn WP8 Developer Guide
C# 05장. 메소드와 인자.
윤 홍 란 MFC 기초 윤 홍 란
델파이/C++빌더 3tier 프레임워크 기반 업무 개발
상속.
DB와 WEB 연동(1) [2-Tier] Java Applet 이용
7. JavaBeans 프로그래밍 JavaBeans JavaBeans 만들기 Bean을 이용한 회원가입 양식 작성하기
Web Server와 DB 연동.
HTML CSS 자바스크립트 무작정 따라하기
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
객체지향 언어와 클래스, 객체 ㅎㅎ 개요 클래스의 선언, 객체의 생성 및 속성 참조 방식 멤버 변수 메소드 한빛미디어(주)
멀티미디어 기본+활용 제대로 배우기.
6장 히스토그램 처리 차 례 히스토그램의 개요 히스토그램의 용도 영상 이치화 히스토그램 평활화 히스토그램 스트레칭
JSON-RPC 서버 만들기 11장 Do it! Node.js 프로그래밍 이지스퍼블리싱 제공 강의 교안 2017/03
Chap07 예외 처리 7.1 예외의 개요 7.2 예외 관련 클래스 7.3 예외 처리.
10장 다중 스레드 10.1 스레드 개요 10.2 Thread 클래스 10.3 스레드 생성
Lesson 10. 애플릿과 그래픽.
MFC UI for TS Analyzer 서울시립대학교 컴퓨터통계학과 최 용 진.
Chapter 05. 클래스 완성. chapter 05. 클래스 완성 01. 복사 생성자 복사 생성(Copy Construction) 생성될 때 자신과 같은 타입의 객체를 변수로 받아, 이 객체와 같은 값을 갖는 새로운 객체를 생성하는 것 명시적인 생성 과정뿐만.
DataScience Lab. 박사과정 김희찬 (월)
Visual Basic 기초 1 목표: 컴퓨터기반제어에 관련된 학습을 하기 전에 Visual Basic의 기초를 살펴본다.
Active X 이름 : 김 수 종 학번 :
5주차: Functions in C.
Html(front end) & jsp(back end)
충북대학교 데이터베이스 & 정보시스템 연구실 정 태 성
10장. 자바빈(JavaBean) 이 장에서 배울 내용 : 화면에 표시를 담당하는 JSP페이지와 실제프로그램을 처리하는 로직을 분리하는 것에 대해서 학습한다. 하나의 JSP페이지 안에 디자인부와 로직부가 혼재하게 되면 프로그램의 협업과 유지보수가 어렵다. 자바빈은 로직을.
이장에서 배울 내용 : 화면에 표시를 담당하는 JSP페이지와 실제프로그램을 처리하는 로직을 분리하는 것에 대해서 학습한다
비주얼 프로그래밍(2분반) 강의노트 2분반 = 월/목.
DataScience Lab. 박사과정 김희찬 (월)
자바의 신 Volume 1 1부(1~3장) 자바의 신 메인 홈 : 자바의 신 페이스북: 자바의 신 문제 풀이 :
Flash를 이용한 벡터 애니메이션 제작.
인터넷응용프로그래밍 Atom(개발 환경).
시스템 접속환경 설정 인터넷 옵션 설정 익스플로러 상단 메뉴 에서 을 클릭하고, 아래 순서대로 설정합니다. 1. 탭에서 을 클릭하여 “페이지 열 때마다”를 체크하고 합니다. 2. 탭을 선택하고 하단의 에.
제 3 장 연산자 (Operators).
CHAP 13. 서비스와 방송 수신자.
SpringFramework 중간고사 요약 REST by SpringFramework.
Chap. 14 성능향상시키기 PS Lab. 이지연.
컴퓨터공학실습(I) 3주 인공지능연구실.
프로그래머를 위한 첫걸음 JDBC Lecture 001 BY MINIO
EndNote 정기교육 - STEP 2- 일자: 2012년9월4일(화) 시간: 13:00-13:30(30분) 장소: 의학도서관.
비주얼 프로그래밍 1분반 화/목.
자바 5.0 프로그래밍.
JA V A W. 07 Sb.L.
Barat을 이용한 Code Transformation
2장 비주얼베이직 시작하기 2.1 비주얼베이직 프로그래밍 스타일 2.2 비주얼베이직 시작하기.
3장,4장 발표 서정우.
03. 메모리 관리 C++ 프로그램에서 다룰 수 있는 메모리의 종류
JSP 빈즈 1.JSP 빈즈? JSP와 연동을 위해 만들어진 컴포넌트 클래스를 말한다. JSP 빈즈는 컨테이너에 위치하며, 데이터 처리와 공용화된 기능을 제공하기 때문에 빈즈를 잘 활용하면 프로그램의 중복을 줄이고 좀더 원할한 유지보수가 가능한다. 물론 , 모든 JSP를.
뇌를 자극하는 C 프로그래밍.
제 7장 이벤트.
6장 클래스(상속).
제 14 장 응용 계층과 클라이언트-서버 모델 클라이언트-서버 모델 14.2 동시성 14.3 프로세스 14.4 요약.
자바 프로그래밍 Thread를 이용한 애니메이션 서울호서전문학교 게임프로그램개발과.
캡슐화 (Encapsulation) 두원공과대학 소프트웨어개발과 이 원 주.
C.
Web & Internet [10] 입문 – input 태그
1 2 4 &
자바 가상 머신 프로그래밍 Chapter 3. 메소드 작성하기 Pslab 오민경.
프로그래밍 기법 최적화 프로그래밍.
Presentation transcript:

ActiveX 개발 KnowHow (C++ Builder 6.0) 2004. 4. 07. ㈜ 이서비스엔지니어링

목차 – ActiveX ActiveX 만들기 경고창 제거하기 이벤트 변수 함수 CLSID 변경

1.ActiveX 만들기 ActiveX 생성 I 1) ActiveX 최초설정 2) 프로젝트옵션 설정 ActiveX 를 Wizard를 사용할때 처음 나타나는 화면입니다. 보기 배포시 첨부될 파일들을 모두 ActiveX내에 포함하기위한 설정입니다. Packages 탭의 하단에 있는 Build with Rungtime packages 의 체크를 제거합니다. * Project Manager 내용은 다른 파일의 배포 없이 사용이 가능하도록 설정하기 위함입니다.

1.ActiveX 만들기 ActiveX 생성 II 3) 프로젝트 옵션 II 4) Web Deployment Option 코딩을 마치고 배포에 앞서 필요한 설정입니다 최종 베포시만 “Use CAB file compression” 를 Check 함 “Auto increment release number” 는 Check 하지 않고 작업  배포시 버전을 수동으로 확정하고 배포 Linker 탭의 Linking 중 Use dynamic RTL을 제거합니다.

2. 경고창 제거하기 경고창 경고창 제거하기 (C++ builder 6.0) 원소스 class ATL_NO_VTABLE TTestXImpl:   VCLCONTROL_IMPL(TTestXImpl, TestX, TPanel, ITestX, DIID_ITestXEvents) 수정소스 class ATL_NO_VTABLE TTestXImpl:   VCLCONTROL_IMPL(TTestXImpl, TestX, TPanel, ITestX, DIID_ITestXEvents), public IPersistPropertyBagImpl<TAxEventXImpl>, …….……………………………. ①   public IObjectSafetyImpl<TTestXImpl, INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA> BEGIN_COM_MAP(TTestXImpl) VCL_CONTROL_COM_INTERFACE_ENTRIES(IAxEventX) COM_INTERFACE_ENTRY_IMPL(IPersistPropertyBag) ……………………………. ① END_COM_MAP() BEGIN_CATEGORY_MAP(TTestXImpl) ……………………………… ②     IMPLEMENTED_CATEGORY(CATID_SafeForScripting)     IMPLEMENTED_CATEGORY(CATID_SafeForInitializing) END_CATEGORY_MAP() 설명 ① : 파라미터 사용을 위하여 필요한 항목 ② : 적당한 위치에 추가 하시면 됩니다.

3. 이벤트 이벤트 이벤트 만들기 Type Library 에서 Event 생성 1) IAxEventXEvents 에서 메소드추가 2) Parameters 에 인자 추가 3) Registr Type Library 실행 4) 호출이벤트 생성 Ex) Fire_OnTest(&oleStr);

3. 이벤트 이벤트 이벤트 정의 및 호출 1) AxEventImpl1.h 정의 이벤트 매핑 설명 class ATL_NO_VTABLE TAxEventXImpl: VCLCONTROL_IMPL(TAxEventXImpl, AxEventX, TAxEventX, IAxEventX, DIID_IAxEventXEvents), -- 중략 -- void InitializeControl() { m_VclCtl->OnActivate = ActivateEvent; m_VclCtl->OnClick = ClickEvent; m_VclCtl->OnCreate = CreateEvent; m_VclCtl->OnDblClick = DblClickEvent; m_VclCtl->OnDeactivate = DeactivateEvent; m_VclCtl->OnDestroy = DestroyEvent; m_VclCtl->OnKeyPress = KeyPressEvent; m_VclCtl->OnPaint = PaintEvent; m_VclCtl->btnTest->OnClick = Test; …………………… ① m_VclCtl->PB1->OnMouseUp = MyMouseUpEvent; …………………… ② } void __fastcall Test(TObject * Sender); …………………… ③ void __fastcall MyMouseUpEvent(TObject * Sender, TMouseButton Button, TShiftState Shift, int X, int Y); …………………… ④ 설명  ActiveForm 객체가 직접 외부 이벤트를 호출할 수 없기 때문에 중간 함수를 지정하여 함수 내에서 호출 ①,② : 폼에서 이벤트에 Mapping 할 함수 지정 ③,④ : 함수 선언 * Mapping 한 이벤트와 함수는 동일한 인수를 가져야 한다.

3. 이벤트 이벤트 이벤트 정의 및 호출 2) AxEventImpl1.cpp 함수정의부 설명 void __fastcall TAxEventXImpl::Test(TObject * Sender) { wchar_t* oleStr = WideString(m_VclCtl->edtTest->Text); Fire_OnTest(&oleStr); } //--------------------------------------------------------------------------- void __fastcall TAxEventXImpl::MyMouseUpEvent(TObject * Sender, TMouseButton Button, TShiftState Shift, int X, int Y) 설명  정의한 함수에서 Type Library 에서 생성한 이벤트를 호출한다. Ex) Fire_OnTest(&oleStr);

4. 변수 변수 변수 만들기 Type Library 에서 변수 생성 생성 1) IAxEventX 에서 Property 추가 2) Type 지정 : BSTR 3) Registr Type Library 실행 4) 생성된 함수 확인 get_Test(BSTR* Value) set_Test(BSTR Value)

4. 변수 변수 변수 설명 사용법 설명 1) Get 함수  외부에서 ActiveX 내의 어떤 값을 가져올수 있다 . <script language="JavaScript" > function get() { alert(AxTest.Test); } </script> 2) Set 함수  외부에서 ActiveX 내부로 값을 전달할 수 있다. function set() AxTest.Test = “333333”; 설명 1) Get 함수  외부에서 ActiveX 내의 어떤 값을 가져올수 있다 . STDMETHODIMP TAxEventXImpl::get_Test(BSTR* Value) { try *Value = WideString(m_VclCtl->edtTest->Text).Copy(); } catch(Exception &e) return Error(e.Message.c_str(), IID_IAxEventX); return S_OK; }; 2) Set 함수  외부에서 ActiveX 내부로 값을 전달할 수 있다. STDMETHODIMP TAxEventXImpl::set_Test(BSTR Value) m_VclCtl->edtTest->Text = AnsiString(Value);

4. 변수 변수 PARAM 변수를 사용하기 위한 작업 Type Library 에서 변수 생성 생성 1) IAxEventX 에서 Property 추가 2) Type 지정 : BSTR 3) Registr Type Library 실행 4) 생성된 함수 확인 get_Test(BSTR* Value) set_Test(BSTR Value)

4. 변수 변수 파라미터 내용 설명 AxEventImpl1.cpp AxEventImpl1.h 사용법 설명 BEGIN_PROPERTY_MAP(TDIYFtpImpl) PROP_ENTRY("Param",17,CLSID_NULL) ……………… ① // PROP_PAGE(CLSID_DIYFtpPage) END_PROPERTY_MAP() AxEventImpl1.cpp STDMETHODIMP TAxEventXImpl::get_Param(BSTR* Value) { try { } catch(Exception &e) { return Error(e.Message.c_str(), IID_IAxEventX); } return S_OK; }; STDMETHODIMP TAxEventXImpl::set_Param(BSTR Value) …………… ② m_VclCtl->edtTest->Text = AnsiString(Value); } catch(Exception &e) { 사용법 <OBJECT name="AxTest" classid="clsid:AEB2CFE9-195F-4FAD-9F28-5E903D769F05" width=500 height=250 align=center hspace=0 vspace=0 > <PARAM NAME="Param" VALUE="Param Test"> </OBJECT> 설명 ① : Property 의 ID 를 확인 후 PROP_ENTRY("Param",17,CLSID_NULL) 를 수동으로 추가 한다. ② : 파라미터는 set_ 함수만 정의 한다.

5. 함수 함수 함수 만들기 I Type Library 에서 함수 생성 1) IAxEventX 에서 Method 추가 2) Parameters 지정 3) Registr Type Library 실행 4) 생성된 함수 확인 TestFunc(BSTR val, long* ret)

5. 함수 함수 함수 만들기 II Type Library 에서 함수 생성 1) IAxEventX 에서 Method 추가 2) Parameters 지정 - 리턴값인경우 . 포인터형 선언 . Parameters Flags 를 Out, RetVal 로 Check 한다. 3) Registr Type Library 실행 4) 생성된 함수 확인 TestFunc(BSTR val, long* ret)

5. 함수 함수 함수 설명 사용법 설명 1) 입력인자와 리턴값이 long 타입인 경우 <script language="JavaScript" > function test1() { var ret; ret = AxTest.TestFunc("함수테스트"); alert(ret); } </script> 2) 리턴타입이 BSTR 형인 경우 function test2() ret = AxTest.TestFunc2(); 설명 1) 입력인자와 리턴값이 long 타입인 경우 STDMETHODIMP TAxEventXImpl::TestFunc(BSTR val, long* ret) { try { ShowMessage(AnsiString(val)); …………………… ① *ret = 10000; } catch(Exception &e) { return Error(e.Message.c_str(), IID_IAxEventX); } return S_OK; }; 2) 리턴타입이 BSTR 형인 경우 STDMETHODIMP TAxEventXImpl::TestFunc2(BSTR* ret) *ret = WideString(m_VclCtl->edtTest->Text).Copy(); ① : 이 영역에 코드를 기술한다.