WideStudio/MWT Logo
WideStudio/MWT
Programming Guide
WideStudio/MWT Index
Table of contents


获取/设定对象的属性值

在事件过程中可以通过使用以下API访问对象的属性。

函数 功能
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 类型,能够自动进行类型转换。因此,编写代码时不须注意 类型转换。

下例说明了如何手动将整数型转换为字符串类型。

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*字符串。

如果直接将getProperty返回值赋给char* 变量,该变量不会有效。 对其的访问将产生内存异常。

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 属性值的例子中,通过整数类型设定属性值。 由于函数getProperty()的参数是WSCvariant类型,能够自动 进行类型转换。因此,编写代码时不须注意类型转换。



根据属性值更新对象

通常,在事件过程执行完毕后立即更新对象。如果需要在修改属性值后 立即更新对象,通过调用update()、draw()和redraw()函数来实现。

在不同的窗口系统更新对象时,存在不能立即更新的情况(例如X11系统等)。 此时,请调用WSDappDev类的update()方法。

#include 

void event_procedure(WSCbase* object){

  obj1->getProperty(WSNlabelString,"text"); 
  obj1->update();  //直接更新对象
  WSGIappDev()->update(); //向窗口系统提出更新要求
 
  obj2->getProperty(WSNlabelString,"text"); 
  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