창조유저그룹-커즈닷컴
Window close
ID :     PASS :   
   
  처음으로
  창조
  창조 소개
창조 다운로드
CUGz.com 소개
온라인 도움말
  커뮤니티
  가입인사
자유게시판
Q/A게시판 (1/0)
TIP/TECH
열린강좌
자주하는질문
아이디어게시판
  자료실
  소스자료실
프로그램자료실
기타자료실
명예의 전당
이미지 자료실
  지원/기타
  표준용어재정
구글 웹서치  
관리자 전용


LIST ALL
Posted by 지상현2007-08-11 16:20:55, Hit : 10785
창조와 ActiveX (2)
Homepage : http://ssidang.x-y.net
Post URL : http://cugz.sjworks.net/bbs/zboard.php?id=open_lec&no=113
저번에 이어, 오늘은 드디어 ActiveX 개체를 한번 만들어봅시다.
CreateCOM 라이브러리를 기준으로 설명해보겠습니다.


(5) ActiveX 만들기
일단 ActiveX 개체를 만들어봅시다.
oNew 함수를 이용해서 할 수 있습니다.

먼저 만들고 싶은 ActiveX 개체의 ProgID 란 것을 알아야 합니다.
ProgID는 ActiveX 개체의 이름 같은 것인데, 흔히 "회사.이름.버전" 같은 식으로 짓습니다.

예를 들면,
인터넷 익스플로러 => "InternetExplorer.Application"
XML 파서 => "Microsoft.XMLDOM"
알파 변형 필터 => "DXImageTransform.Microsoft.Alpha"

이밖에도 수많은 ActiveX 개체가 있습니다.

ActiveX 개체를 만들려면 다음과 같이 합니다.




oNew(0, "InternetExplorer.Application", "");

첫 번째 인자와 세 번째 인자는 항상 0과 ""을 넣고, 두 번째 인자만 원하는 개체의 ProgID를 적어주면 됩니다.
개체를 제대로 만들었다면, 어떤 값이 반환됩니다.
실패하면 0이 반환되고, oResult 함수로 실패 이유를 알 수 있습니다.

(6) ActiveX 개체 다루기
ActiveX 개체는 창조의 객체와 매우 비슷합니다.

똑같이 함수와 속성이 있고, 함수를 호출하고, 속성의 값을 가져오거나 대입할 수 있습니다.
이 때 속성의 경우엔 문법적으로 따로 대입하거나 가져올 수 없으므로, 세 경우 모두 oInvoke 함수를 이용해 호출할 수 있습니다.

ㅎ창과 똑같은 ActiveX 개체가 있다고 치고, 예를 들어보겠습니다.




창.제목 := "ActiveX 예제";
핸들 := 창.핸들;
창.보여;

첫 번째 줄은 속성을 대입하는 것이고, 두 번째 줄은 속성을 가져오는 것, 세 번째 줄은 객체의 함수를 호출하는 것입니다.
위 코드를 CreateCOM 라이브러리로는 어떻게 하는지 봅시다.




oInvoke(2, 창, "제목", " 'ActiveX 예제' ");
핸들 := oInvoke(1, 창, "핸들", "");
oInvoke(0, 창, "보여", "");

상관 관계를 잘 보시기 바랍니다.
먼저 첫 번째 인자는 호출하는 방법인데, 0은 함수 호출, 1은 속성 가져오기, 2는 속성 대입하기입니다.
0, 1인 경우엔 함수의 결과와 속성 값을 반환 값으로 받을 수 있습니다.
만약 반환 값이 문자라면 oInvokeStr 함수를 쓰면 됩니다.
두 번째 인자는 객체 자체고, 세 번째 인자는 객체의 함수나 속성 이름입니다.
객체에 무슨 함수나 속성이 있는지는 그 ActiveX에 관련된 문서나 TypeLib 정보를 참조해야 합니다.
여기서는 모두 알고 있다고 가정합시다.

그러면 간단하게 익플 창을 하나 띄워볼까요?




// 익플 창을 띄우는 코드 (의사 코드임)
익플.Navigate("http://cugz.com");
익플.Visible := 참;
익플 개체에 있는 Navigate 함수는 특정 주소로 이동하는 함수입니다.
Visible 속성은 창조에 있는 보이기 속성과 같습니다.

위 코드가 제대로 작동한다면, cugz.com을 띄우는 익플 창이 하나 뜰 것입니다.
위 코드를 CreateCOM을 이용한 코드로 바꿔봅시다.




oInvoke(0, 익플, "Navigate", " 'http://cugz.com' ");
oInvoke(2, 익플, "Visible", "참");

만약, 오류가 발생했다면 oResult 함수로 오류 코드를 얻을 수 있습니다. (0이 나오면 성공한 것입니다.)
또 '익플'이란 개체에 'Navigate'란 함수가 없었다면 실행되지 않고 오류 코드가 설정됩니다.


참, '익플'이란 개체를 쓰기 전에 당연하지만 그 개체를 미리 만들어둬야 합니다.
위에서 '익플'이란 개체를 얻기 위해서는,




실수: 익플;

익플 := oNew(0, "InternetExplorer.Application", "");

같은 식으로 하시면 됩니다.

(7) oInvoke에서 인자 넘기기
CreateCOM에서는 함수마다 다른 개수의 인자를 넘길 수 있도록, 인자 내용을 문자열로 통째로 넘기는 방법을 지원합니다.

규칙은 간단합니다.
각 인자를 , 으로 구분하고, 문자열은 ' 으로 묶습니다. 문자열 안에서 ' 자체를 쓰고 싶다면 '' 라고 쓰면 됩니다.
진리 값은 참, 거짓을 넣으면 됩니다.

123, "가나다라", 거짓
을 바꿔보면

"123, '가나다라', 거짓"
이 됩니다.

이 때, 두 번째 인자에 변수를 쓰게 된다면 어떻게 할까요?
예) 123, 에디트0.문자, 거짓

변수 이름을 그대로 쓰면 안 되고, 다음과 같이 실제 값만 넘어야 합니다.
"123, '" + 에디트0.문자 + "', 거짓"

(8) 만든 개체 지우기
개체를 만들고 필요가 없다면 반드시 지워주는게 좋습니다.
간단하게 oDelete 함수를 이용해서 만들었던(혹은 다른 개체로부터 얻어온) 개체를 집어넣으면 개체를 제거할 수 있습니다.





지금까지 ActiveX 개체를 다루는 아주 기본적인 것들을 살펴봤습니다.
특정한 ActiveX 객체를 다루고 싶다면 먼저 그 ActiveX 개체에 어떤 속성들과 함수가 있는지 문서를 찾아봐야 합니다.
그런 것을 알면 CreateCOM으로 써먹을 수 있을 겁니다.

LIST ALL               GO TO THE TOP


N
   Subject
Posted by
Date
H
119
   창조에서 반올림하기 [1]
지상현 2013/01/05  5002
118
   컴퓨터에서 소수점을 표기하는 방식에 대해 [1]
지상현 2012/01/03  7503
117
   창조의 변수형에 대한 고찰 [1]
지상현 2012/01/03  5776
116
   창조 초보자들을 위한 아주 기본적인 사용법
김대명 2011/03/09  6214
115
   객체 배열을 정복해보자! [1]
지상현 2010/06/28  6970
114
     [강좌#7.5] 창조 오류 해부 2.5탄 (나머지)
지상현 2010/06/02  11533
113
       [2강] ㅎ그림판에 그림을 그리기 위해 준비단계
박종훈 2009/10/24  5962
112
     [1강] 그림과 관련된 객체
박종훈 2009/10/24  5751
111
   [0강] 그림판에 그림을 그려보자!
박종훈 2009/10/24  6623
110
             [4강] 현, 호를 그려보자! [4]
박종훈 2009/10/24  6255
109
           [3강] 타원을 그려보자! (원 포함)
박종훈 2009/10/24  8362
108
         [2강] 사각형을 그려보자!
박종훈 2009/10/24  5617
107
       [1강] 직선을 그려보자!
박종훈 2009/10/24  7715
106
     [0강] ㅎ배경의 좌표 체계에 대해서 알아보자! [2]
박종훈 2009/10/24  7014
105
     호현계산기2 Rev2 [6]
박종훈 2009/10/23  5866
104
   [수정!] 직선, 사각형, 타원, 원, 호, 현을 그려보자! [4]
박종훈 2009/05/10  6651
103
   기타 자료실에 있는 다람쥐어 (파악해 보자_) [2]
김제형 2009/05/03  5766
102
   맞짱! 포인터(Pointer) - 3부 [창조에서 포인터를 사용해보자!] ... 제작중
박종훈 2009/02/26  5926
101
   맞짱! 포인터(Pointer) - 2부 [C언어 포인터 존재를 확인하자!]
박종훈 2009/02/26  7279
100
   맞짱! 포인터(Pointer) - 1부 [C언어 들춰보자!] [7]
박종훈 2009/02/26  6262
99
   자연수들의 합 쉽게 구하는 방법(수학과 프로그래밍) [7]
박종훈 2009/02/15  6117
98
   창조입문 : 메모장 만들기 [2]
신용주 2008/12/20  7543

   창조와 ActiveX (2)
지상현 2007/08/11  10785
96
   창조와 ActiveX (1)
지상현 2007/08/07  8275
95
   골칫거리 ㅎ사용자함수 DLL하나로 해결하기! [7]
박종훈 2007/06/23  7103
LIST ALL   1 [2][3][4][5] Next
Copyright 1999-2024 Zeroboard / skin by reedyfox in miniwini style
로그인
지우개 Expert 3.0
제작자 : 천호성 님 [LINK]
로그인
대박로또2005
제작자 : 최재일 님 [LINK]
로그인
1박종훈15292 점
2지상현8809 점
3손상진7388 점
4권선중6060 점
5이진백5174 점
로그인
가입일닉네임
05/31김동률
03/31홍형기
09/01o00pp99oo
12/27이재민
11/20이희철
로그인