WideStudio Programming Guide

| WideStudio Programming Guide | WideStudio Index Table of contents

> ## 객체의 속성지를 취득/ 설정하기에는

> 이벤트 프로시저에있어서, 객체의 속성에대하여 접근(access) 할수 있습니다. 다음의 API를 사용합니다.

> 접근(access) 함수 | 기능
> getProperty() | 속성지의 취득
> setProperty() | 속성지의 설정

> ### 속성지의 취득

> 객체의 속성을 취득하기에는,WSCbase 클래스의 멤버 함수인 getProperty() 의 사용합니다.

>     void event_procedure(WSCbase* object){

>       //WSNx (X 좌표) 속성지의 문자열에의한 취득
>       WSCstring x = object->getProperty(WSNx);
>       printf("x=%s\n",(char*)x);

>       //WSNy (Y 좌표) 속성지의 취득
>       short y =  object->getProperty(WSNy);

>     }

> WSNx 의 예로는, 문자열로 값을 취득하고있습니다. 문자열 클래스 WSCstring 는, 내부에서 문자열 영역의 관리를 자동적으로 하기에, 프로그래머가 관리할 필요가 없읍니다.
> WSNy 의 예로는,수지형으로 받아드려있습니다. 함수 getProperty() 는, WSCvariant 형으로 값을 돌리나,WSCvariant 형은,각각의 변수형으로 자동적으로 형변환됩니다. 따라서, 형변환을 WSCvariant 형이 하기에,프로그래머가 걱정할필요가 없읍니다.
> 다음 예는,정수형에서, 문자열형으로 변환되는것입니다.

>     void cbop(WSCbase* object){

>       //WSNx (X 좌표) 속성지의 문자열에의한 취득
>       WSCstring x = object->getProperty(WSNx);
>       printf("x=%s\n",(char*)x);

>       //WSNy (Y 좌표) 속성지의 취득
>       short y =  object->getProperty(WSNy);

>       //정수형을 문자열로 변환
>       WSCvariant stry = y;
>       printf("y=%s\n",(char*)stry);
>       //VARIANT 형을 부동소수점형으로 변환
>       printf("y=%fl\n",(double)stry);
>     }

> 속성지를, 문자열로 취득할 경우의 주의점은, char* 로 직접 취득해서는 안됩니다.
> char* 문자열를 취득할 경우는, 아래의 예와 같이 일단,WSCstring 으로 취득해서, char* 문자열로 취득 해 주십시오. 일단,WSCstring 로 취득 함으로서, char* 문자열 영역이 WSCstring 내에 확보되여, 참조가능해게 됩니다.
> 틀린 예처럼, 직집 char* 로 취득하면, getProperty 가 돌려놓은 WSCvariant 가 보지될것없이 개방되기에, 취득한 char* 가 곧 무효로 됩니다. 이 무효영역으로된 char* 에 접근(access)하면, segmentation fault 를 일으킵니다.

>     void event_procedure(WSCbase* object){

>       //WSNlabelString  표시 문자열 속성의 문자열에의한 취득
>       //해서는 안되는 예
>       char* string = object->getProperty(WSNlabelString);

>       //WSNlabelString  표시 문자열 속성의 문자열에의한 취득
>       //좋은 예
>       WSCstring string1
>       string1 = object->getProperty(WSNlabelString);
>       char* str = (char*)string1;

>     }

> ### 속성지의 설정

> 객체의 속성을 설정하기에는 WSCbase 클래스의 멤버 함수인 setProperty() 를 사용합니다.다음 예는

>     void event_procedure(WSCbase* object){

>       //WSNx (X 좌표) 속성의 문자열에의한 설정
>       char* x="100";
>       object->setProperty(WSNx,x);

>       //WSNy (Y 좌표) 속성의 설정
>       short y=100;
>       object->setProperty(WSNy,y);

>     }

> WSNx 의 예로는 문자열로 값을 설정하고있습니다.WSNy 의 예로는 정수형으로 값을 설정하고있습니다. 함수 setProperty() 는,WSCvariant 형을 인수로합니다. 따라서 여로형을 자동적으로 형변환해서 받아드릴수있습니다. 프로그래머는 형을 걱정말고 접근(access)할수있습니다.

> ### 속성지의 묘화에의 반영

> 보통, 이벤트 프로시저의 실행직후에 반영되나, 변경후, 속성의 값을 즉시 반영할 경우,update(),draw(),redraw() 를 호출합니다.
> 윈도우 시스템에 따라서는 ( 예컨데 X11 시스템의 경우등) 묘화 를 한때, 즉시는 윈도우 시스템에 반영안될 경우가 있습니다. 그럴 경우는 WSDappDev 클래스의 update() 를 호출해주십시오.

>     #include <WSDappDev.h>

>     void event_procedure(WSCbase* object){

>       obj1->getProperty(WSNlabelString," 택스트");
>       obj1->update();  //즉시 객체를 갱신.
>       WSGIappDev()->update(); // 윈도우 시스템에로 묘화요구를 반영합니다.

>       obj2->getProperty(WSNlabelString," 택스트");
>       obj2->update();  //즉시 묘화된다.
>       WSGIappDev()->update(); // 윈도우 시스템에로 묘화요구를 반영합니다.

Document Release 3.70 for WideStudio ver 3.70, Feb 2004

WideStudio documents index | Table of contents

Copyright(C) T. Hirabayashi, 2000-2004 | Last modified: Feb 25, 2004