WideStudio Programming Guide

| WideStudio Programming Guide | WideStudio 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.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