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 사용을 위한 구조체읽고, 쓰기 강좌를 마치겠습니다. |
|