WideStudio/MWT Logo
WideStudio/MWT
Programming Guide
WideStudio/MWT 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.90 for WideStudio/MWT ver 3.90, Jul 2005


WideStudio/MWT documents index | Table of contents

Copyright(C) WideStudio/MWT Development Team, 1999-2005 Last modified: Jul 31, 2005