충북대학교 데이터베이스 & 정보시스템 연구실 정 태 성 ActiveX프로그램 만들기 충북대학교 데이터베이스 & 정보시스템 연구실 정 태 성
Contents ActiveX 개념 ActiveX 컨트롤 제작 일반 응용 프로그램에서 ActiveX 사용하기 DDE, OLE, COM, ACTIVEX ActiveX 컨트롤 제작 일반 응용 프로그램에서 ActiveX 사용하기 웹에서 ActiveX 사용하기 ActiveX 활용 예 CBNU DBNIS Lab. DBNIS.CBNU.AC.KR
ActiveX 개념 DDE (Dynamic Data Exchange) 프로그램과 프로그램 간에 통신 예) 프로그램 A: 작업 a 프로그램 B: 작업 a의 결과를 이용한 작업 b 처리 방안 B는 A의 작업 처리 결과 요청 A는 응답 B가 결과를 받겠다고 하면 A는 결과를 전송 B는 수신 응답 DDEML (Dynamic Data Exchange Management Library) CBNU DBNIS Lab. DBNIS.CBNU.AC.KR
ActiveX 개념(cont.) OLE COM 객체간에 서로 연결하여 필요한 부분을 상호 교환하며 프로그램을 구동 객체 지향 재사용 COM 예) 컴퓨터 : 각 부품들의 조립 운영체제는 각 부품의 사용법만 알면 됨. 프로그램 A 호출 COM C Interface 객체 내부 수행 Interface CBNU DBNIS Lab. DBNIS.CBNU.AC.KR
ActiveX 개념(cont.) Automation 자동적으로 구동되는 것을 의미 COM의 발전된 형태 CBNU DBNIS Lab. DBNIS.CBNU.AC.KR
ActiveX 개념(cont.) COM의 불편함을 보완한 것이 Automation Automation을 보완한 것이 ActiveX ActiveX (세 개의 함수 이용 : Automation과 동일) GetProperty SetProperty InvokeHelper CBNU DBNIS Lab. DBNIS.CBNU.AC.KR
ActiveX 개념(cont.) Automation은 사용자가 직접 작업하지만, ActiveX는 자동적으로 생성 예) bmp 출력 draw.ocx ① OCX 파일 함수 Char *file Int x; Int y; BOO DrawImage() ② Method & Property SetProperty(…) GetProperty(…) InvokeHelper(…) ③ 클라이언트 내부 SetXpos GetXpos BOOL DrwaImage() CBNU DBNIS Lab. DBNIS.CBNU.AC.KR
ActiveX 컨트롤 제작 CBNU DBNIS Lab. DBNIS.CBNU.AC.KR
ActiveX 컨트롤 제작(Cont.) 생성되는 파일 및 그 기능 Tetris.cpp : App 기능과 같은 역할을 한다. TetrisPpg.cpp : Document 기능과 같은 역할을 하도록 구성된 것 같으나 거의 사용하지 않고 Ctrl에 메모리 내용도 구현한다. TetrisCtrl.cpp = View 기능과 같은 역할을 한다. 즉, TetrisCtrl.cpp파일을 열어 OnDraw함수에 화면에 표시할 루틴을 입력한다. CBNU DBNIS Lab. DBNIS.CBNU.AC.KR
ActiveX 컨트롤 제작(Cont.) CBNU DBNIS Lab. DBNIS.CBNU.AC.KR
ActiveX 컨트롤 제작(Cont.) 데모 프로그램 제작 프로젝트 명 : Test 변수 기능 외부 인터페이스 CString m_strText short m_nDrawType 기능 m_nDrawType이 0이면 사각형을 1이면 원을 그린다. m_strText의 문자열을 화면상에 출력한다. 외부 인터페이스 SetText : m_strText 변경 DrawType 프로퍼티 설정 CBNU DBNIS Lab. DBNIS.CBNU.AC.KR
ActiveX 컨트롤 제작(Cont.) CBNU DBNIS Lab. DBNIS.CBNU.AC.KR
ActiveX 컨트롤 제작(Cont.) CBNU DBNIS Lab. DBNIS.CBNU.AC.KR
ActiveX 컨트롤 제작(Cont.) 소스를 보면 TestCtrl.cpp에 SetText, GetDrawType, SetDrawType함수가 추가되어 있는 것을 볼 수 있을 것이다. 이 함수들을 다음과 같이 수정한다. void CTestCtrl::SetText(LPCTSTR strText) { m_strText = strText; InvalidateControl; } short CTestCtrl::GetDrawType() return m_nDrawType; void CTestCtrl::SetDrawType(short nNewValue) m_nDrawType = nNewValue; InvalidateControl; SetModifiedFlag(); CBNU DBNIS Lab. DBNIS.CBNU.AC.KR
일반 응용 프로그램에서 ActiveX사용하기 CBNU DBNIS Lab. DBNIS.CBNU.AC.KR
일반 응용 프로그램에서 ActiveX사용하기 void CUseActiveXDlg::OnTextButton() { UpdateData(); m_TestCtrl.SetText(m_strText); } void CUseActiveXDlg::OnSelchangeDrawTypeCombo() { UpdateData(); m_TestCtrl.SetDrawType(m_nDrawType); } CBNU DBNIS Lab. DBNIS.CBNU.AC.KR
웹에서 ActiveX 사용하기 Front Page를 이용 삽입 – 웹 구성 요소 – 고급 컨트롤 – ActiveX 컨트롤 사용자가 만들 컨트롤의 경우 목록에 없는 경우가 대부분이므로 사용자 지정으로 추가한다. CBNU DBNIS Lab. DBNIS.CBNU.AC.KR
웹에서 ActiveX 사용하기(Cont.) <html> <head> <meta name="GENERATOR" content="Microsoft FrontPage 5.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <meta http-equiv="Content-Type" content="text/html; charset=ks_c_5601-1987"> <title>새 페이지 1</title> <meta name="Microsoft Theme" content="kreligion-blue 011, default"> </head> <body> <p> <object classid="clsid:0D886696-C7CE-11D3-A175-08002BF17507" id="Test1" width="237" height="257"> <param name="_Version" value="65536"> <param name="_ExtentX" value="6271"> <param name="_ExtentY" value="6800"> <param name="_StockProps" value="0"> </object> </p> </body> </html> CBNU DBNIS Lab. DBNIS.CBNU.AC.KR
웹에서 ActiveX 사용하기(Cont.) <form method="POST" method="get" name="form"> <input type="text" name="TextEdit" value="ActiveX 테스트" size="20"> <input type="button" value="설정" onclick="OnTextButtonClick"> <select name="DrawTypeCombo" onchange="OnDrawTypeChange"> <option value="0">사각형</option> <option value="1">원</option> </select></p> </form> CBNU DBNIS Lab. DBNIS.CBNU.AC.KR
웹에서 ActiveX 사용하기(Cont.) <script language="vbscript"> sub OnTextButtonClick() Test.SetText form.TextEdit.Value end sub sub OnDrawTypeChange() Test.DrawType = form.DrawTypeCombo.value </script> CBNU DBNIS Lab. DBNIS.CBNU.AC.KR
ActiveX 활용 예 SpreadSheet Chart Calendar Media Player Setup Interface Game Login component Etc CBNU DBNIS Lab. DBNIS.CBNU.AC.KR