![]() | 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()方法。#includevoid event_procedure(WSCbase* object){ obj1->getProperty(WSNlabelString,"text"); obj1->update(); //直接更新对象 WSGIappDev()->update(); //向窗口系统提出更新要求 obj2->getProperty(WSNlabelString,"text"); obj2->update(); //直接更新对象 WSGIappDev()->update(); //向窗口系统提出更新要求
Copyright(C) WideStudio/MWT Development Team, 1999-2005 | Last modified: Jul 31, 2005 |