获取/设定对象的属性值
在事件过程中可以通过使用以下API访问对象的属性。
函数 | 功能 |
mwt::WSCvariant mwt::WSCbase_getProperty() | 获取属性值 |
mwt::WSCvariant mwt::WSCbase_setProperty() | 设定属性值 |
获取属性值
通过WSCbase类的成员函数getProperty()获取对象的属性值。
#----------------------------------------------------------
#Function for the event procedure
#----------------------------------------------------------
use mwt;
sub event_procedure {
my ($object) = @_;
# 获取"x" (X坐标)属性值的字符串表示
$x = $object->getProperty("x");
printf("x=%s\n",$x->getCharPtr()); # 获得字符串
# 获取"y" (Y坐标)属性值
$y = $object->getProperty("y");
printf("y=%d\n",$y->getLong()); # 获得 long 类型值
}
1;
在获取"x"属性值的例子中,得到的属性值是字符串类型。在获取"y"属性值的例子中,
获得数值型属性值。由于函数getProperty()的返回值是WSCvariant 类型,可以获得
各种类型的值。
mwt.WSCvariant 取值函数 | 功能 |
mwt::WSCvarinat_getChar() | 获取 char 型值 |
mwt::WSCvarinat_getUnsignedChar() | 获取 unsigned char 型值 |
mwt::WSCvarinat_getShort() | 获取 short 型值 |
mwt::WSCvarinat_getUnsignedShort() | 获取 unsigned short 型值 |
mwt::WSCvarinat_getLong() | 获取 long 型值 |
mwt::WSCvarinat_getUnsignedLong() | 获取 unsigned long 型值 |
mwt::WSCvarinat_getInt() | 获取 int 型值 |
mwt::WSCvarinat_getUnsignedInt() | 获取 unsigned int 型值 |
mwt::WSCvarinat_getFloat() | 获取 float 型值 |
mwt::WSCvarinat_getDouble() | 获取 double 型值 |
mwt::WSCvarinat_getCharPtr() | 获取 char* 型值 |
设定属性值
通过WSCbase类的成员函数setProperty()设定对象的属性值。
#----------------------------------------------------------
#Function for the event procedure
#----------------------------------------------------------
use mwt;
sub event_procedure {
my ($object) = @_;
# 通过字符串设定"x"(X坐标)属性值
$x="100";
$object->setProperty("x",$x);
# 设定"y"(Y坐标)属性值
$y=100;
$object->setProperty("y",$y);
return;
}
1;
在设定"x"属性值的例子中,通过字符串类型设定属性值。
而在设定"y"属性值的例子中,通过整数类型设定属性值。
根据属性值更新对象
通常,在事件过程执行完毕后立即更新对象。如果需要在修改属性值后
立即更新对象,通过调用update()、draw()和redraw()函数来实现。
在不同的窗口系统更新对象时,存在不能立即更新的情况(例如X11系统等)。
此时,请调用WSDappDev类的update()方法。
#----------------------------------------------------------
#Function for the event procedure
#----------------------------------------------------------
use mwt;
sub event_procedure {
my ($object) = @_;
$newvlab_001->getProperty("labelString","text");
$newvlab_001->update(); # 直接更新对象
mwt::WSGIappDev()->update(); # 向窗口系统提出更新要求
$newvlab_002->getProperty("labelString","text");
$newvlab_002->update(); # 直接更新对象
mwt::WSGIappDev()->update(); # 向窗口系统提出更新要求
return;
}
1;