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


LIST ALL
Posted by 박종훈2006-08-18 09:13:25, Hit : 5546
API사용을 위한 창조 구조체다루기 [M_S 0608190928]
Homepage : http://www.canxan.com/~qnrdlqkrwhdgns
Post URL : http://cugz.sjworks.net/bbs/zboard.php?id=open_lec&no=96

2006년 8월 19일 오전 9시 28분 일부 약간수정됨
[약간의 오타수정.]

API를 사용하고 싶은데, 다른건 다 좋다만, 구조체라는 것이 있던데..
창조에서도 구조체 사용가능하지만, 사용법을몰라서 해메셨나요?
이 강좌에서는 창조에서 구조체를 사용하는 간단한 예제와 설명을 준비했습니다. ^^..
[물론, 그냥 딱 보고 사용하실지도 모르지만, 그냥 한번 써봅니다. ^^;]

들어가기 전에)
    이 강좌에서는 지상현님의 구조체함수2를 사용합니다.

※ 저도 구조체를 자세히는 모르지만 -_-; 간단한 사용법을 준비했습니다.

구조체를 사용하려면 창조에서는 문자형에 속합니다. 따라서, API중에 구조체를 요구하는
인자는 문자형으로 살짜꿍바꾸어 주시면 됩니다.


즉,
실수함수:CreateLinux(실수:리눅스,빨간모자,눅스눅스; 구조체);
이런식이라면.. 구조체가 들어가는 부분을 문자로 고칩니다.
실수함수:CreateLinux(실수:리눅스,빨간모자,눅스눅스; 문자:구조체);





구조체 사용을 위한 수칙 5
1. 구조체를 사용하려면 구조체버퍼를 잡는다. [구조체버퍼잡아]
2. 구조체에 실수[숫자]를 넣으려면, 따로 변환과정이 필요하다. [수를롱, 수를숏, 수를바이트]
3. 구조체에 문자를 넣으려면, 따로 변환과정은 필요치않다
4. 구조체에서 실수[숫자]를 읽으려면, 따로 변환과정이 필요하다 [롱을수, 숏을수, 바이트를수]
5. 구조체에서 문자를 읽으려면, 따로 변환과정은 필요치않다



구조체사용을 위한 준비단계! 특명 버퍼를 잡아라~!
구조체를 사용하는데, 버퍼도 잡지않고 했다만, 낭폐+허무 입니다.
구조체를 사용하려면 버퍼를 잡아주셔야합니다.

Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End Type

라는 VB구조체가 있다면, [실제로 있는 구조체입니다.]
Long = 실수 = 4바이트 라는 것을 유념해주시고, 버퍼를 잡아주세요.

구조체함수.구조체버퍼잡아;
이 함수가 바로, 구조체의 버퍼를 잡는 함수입니다.
인자는 1개인데요.. 그 인자가 버퍼의 크기입니다. 단위는 바이트[Byte]입니다.

앞서 말했듯이, Long는 4바이트이어서,
[처음꺼는 바이트수, 두번째꺼는 누적입니다.]

Type RECT
        Left As Long    ---> 4바이트 | 4바이트
        Top As Long    ---> 4바이트 | 8바이트
        Right As Long  ---> 4바이트 | 12바이트
        Bottom As Long --> 4바이트 | 16바이트
End Type

그래서~! 위의 구조체를 사용하기 위해서는 총, 16바이트의 버퍼를 잡아주셔야합니다.





문자:나구조체다;

나구조체다:=구조체함수.구조체버퍼잡아(16);
[구조체 버퍼를 잡는 예제]
이렇게 하시면, 나구조체다 문자형[여기서는 구조체]에 16바이트의 버퍼가 잡혔습니다.


구조체를 사용해보자꾸나~ 구조체에 값을 써보자~!
구조체버퍼만 잡았다고, 끝나는 것은 아닙니다.^^;
버퍼를 잡았다면, 값을 쓰고해야합니다.
* 위에서 사용한 구조체를 고대로 사용합니다.

RECT구조체['나구조체다' 변수]에다가, Left에는, 106 라는 값을,
Top에는 159 라는 값을 넣어보겠습니다. [Right나 Bottom은 생략하겠습니다. ^^;]

구조체에 값을 쓸때는, 구조체쓰기 함수를 사용합니다.
인자는 [문자: 구조체, 쓸값; 실수: 쓸곳] 이렇게 되어있는데요..
인자에 대한 설명을 드리겠습니다.
[구조체쓰기 함수 인자설명]
구조체 - 문자형으로, 쓰고자 하는 구조체입니다. [변수를 사용할경우 변수를 넣어주세요.]
쓸값 - 문자형으로, 쓰고자 하는 값입니다. 실수의 경우 앞서 언급했듯이 변환과정이 필요.
쓸곳 - 실수형으로, 쓰고자 하는 위치[곳]입니다. 구조체함수1 에서는 길이도 지정해 주어야
         했지만, 구조체함수2로 넘어오면서, 자동으로 인식해서 써줍니다.





나구조체다:=구조체함수.구조체쓰기(나구조체다,구조체함수.수를롱(106),1);
//Left에다가 106을 쓰는예제 [1은, 쓸곳이다] 구조체의 구조는 위를 참고.
나구조체다:=구조체함수.구조체쓰기(나구조체다,구조체함수.수를롱(159),4);
//Top에다가 159을 쓰는예제 [4은, 쓸곳이다] 구조체의 구조는 위를 참고.
[구조체에 실수를 쓰는 예제]
※실수형의 경우 변환하는 과정이 따로필요하다.
※문자형의 경우 그냥 써도 무난하다.

※실수형의 경우 변환하는 함수 [인자는 모두 변환할 수다.]
   반환값은 문자형으로, 구조체쓰기 함수의 쓸값에 넣으면 된다.
수를롱 - 흔히 쓰이는 경우다. Long 일때 사용한다.
수를숏 - Short 일때 사용한다.
수를바이트 - Byte 일때 사용한다.

※ 문자의 경우 그냥 쓰면 된다.
   예제) 나에비다:=구조체함수.구조체쓰기(나에비다,"father",1);

이렇게 만들어진 구조체들은, 쓰고 싶은 API나 필요한데 쓰면된다.
[구조체는 창조에서 문자에 속한다;]


구조체야 너를 알려줘-_-; 구조체에서 값을 읽어보자~!
위에서는 구조체에 값을 쓰는 것을 해봤다.
여러 API에서는, 구조체로 값을 얻는 경우가 있다.
그렇다면, 구조체에서 값을 읽어보자~!
* 위에서 사용했던, '나구조체다' 를 고대로 사용한다.

구조체에서 값을 읽는 함수는, 구조체읽기 입니다.
인자는 [문자: 구조체; 실수: 읽을곳, 길이] 이며,
[구조체읽기 함수 인자설명]
구조체 - 문자형으로, 읽고자 하는 구조체입니다.
읽을곳 - 실수형으로, 읽고자하는 위치[곳]입니다.
길이 - 실수형으로 읽고자하는 만큼의 길이입니다.

실수는 역시, 읽을떼에도, 변환하는 과정이 있다 ^^;

※ 실수형의 경우 변환하는 함수 [인자는 모두 변환할 값이다.]
    반환값은 실수형이다.

롱을수 - 나올값이 Long일때 사용합니다.
숏을수 - 나올값이 Short 일때 사용합니다.
바이트를수 - 나올값이 Byte 일때 사용합니다.





문자창보여(수를문(구조체함수.롱을수(구조체함수.구조체읽기(나구조체다,1,4))));
문자창보여(수를문(구조체함수.롱을수(구조체함수.구조체읽기(나구조체다,4,8))));
[구조체에서 읽는 예제]

※실수형의 경우 별도의 변환하는 과정이 필요합니다. [거기에, 수를문 도 필요하겠죠? ^^]
※ 마찬가지도 문자형의 경우에는 그냥 사용해도 무난합니다.



이로서 API 사용을 위한 구조체읽고, 쓰기 강좌를 마치겠습니다.

정성우   2006-08-19 AM 8:34:33  
에잉, 수를바이트 - 나올값이 Byte 일때 사용합니다.
이거 맞나요? 바이트를수 아닌감;;;;
그리고 구조체함수 아직 써보진 않았지만 대략 감이 잡히는군요;;;
박종훈   2006-08-19 AM 9:28:17  
헉! 그러네요 ^^;
강좌에서 이러면 안될텐데;
성인e   2009-07-04 PM 10:58:10  
해메다 > 헤매다
낭폐 > 낭패
이로서 > 이로써
LIST ALL               GO TO THE TOP


N
   Subject
Posted by
Date
H
94
   환경파일로 파워유저되어보자![개정판] [설명] 1 -- 완성
박종훈 2007/01/02  6109
93
   ㅎ사용자함수 알아보기! [2]
박종훈 2006/12/24  5394
92
   '변수'와의 인터뷰 -_-; [5]
박종훈 2006/12/24  5355
91
   창조 첫 시작시 명령어 익혀보자~ [4]
박종훈 2006/12/23  8038
90
   쉽고 빠르게 프로그래밍 하기 위한 방법들
장규형 2006/11/22  5394
89
   효과적인 조건문을 위한 논리연산자 [4]
박종훈 2006/10/15  6033
88
   [창조x] 수줍은 pda프로그래밍시작
이진백 2006/09/11  5790

   API사용을 위한 창조 구조체다루기 [M_S 0608190928] [3]
박종훈 2006/08/18  5546
86
   창조 시작단계 문법배워볼까? [M 0608181240] [8]
박종훈 2006/08/17  6506
85
   한글이 입력되기까지 [4]
지상현 2006/07/29  6458
84
   스크린세이버에대한 분석 [5]
박재성[날개달기] 2006/03/08  5280
83
   몇가지 유용한 정보 모음 [5]
최재일 2006/01/13  9348
82
   환경문 강좌..^^; [문자형 자료] [8]
qkrwhdgns 2006/01/10  5636
81
     환경문 강좌..^^; [실수형 자료] [1]
qkrwhdgns 2006/01/11  5244
80
       환경문 강좌..^^; [진리형 자료] [1]
qkrwhdgns 2006/01/11  5017
79
         환경문 강좌..^^; [예제 소스]
qkrwhdgns 2006/01/11  5279
78
   재미있는 포인터 강좌 -1- [2]
지상현 2005/10/12  6273
77
   #1 비트 연산이란? - 진수 표기법
지상현 2005/10/09  11386
76
   [요청강좌#14] DLL제작 강의 (미완성) [4]
이진백 2005/10/09  5604
75
     [re] [요청강좌#14] DLL제작 강의 (미완성) [2]
지상현 2005/10/09  6667
74
   창조로 빠져보는 API #3 [13]
지상현 2005/09/04  7262
73
   창조로 빠져보는 API #2 [3]
지상현 2005/09/04  6329
72
   창조로 빠져보는 API #1 [2]
지상현 2005/09/04  7042
71
   [폴더선택창보여]명령어의 언어 한글로 [8]
qkrwhdgns 2005/08/27  5448
70
   [ps.구루 강좌#13] 창조에서는 델파이에서 만든 DLL만 가능합니까? [1]
이진백 2005/07/22  5959
LIST ALL   Prev [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이희철
로그인