回调函数可以与图形对象相关联,并在某些事件发生后触发。所有回调函数的基本结构体是
函数mycallback(hsrc,evt)。。。结束函数
这里的hsrc
是回调源的句柄,并且evt
给出了一些特定于事件的数据。
该函数可以作为普通Octave函数的函数句柄、匿名函数或表示Octave命令的字符串提供。不建议使用后一种语法,因为只有在评估字符串时才会出现语法错误。详见函数句柄”部分.
然后,它可以在对象创建时与对象相关联,也可以稍后与set
作用例如
plot(x,“DeleteFcn”,@(h,e)disp(“窗口已删除”)
其中,在删除绘图的那一刻,消息窗口已删除
将显示。
额外的用户参数可以传递给回调函数,并将在两个默认参数之后传递。例如
plot(x,“DeleteFcn”,{@mycallback,“1”})。。。函数mycallback(h,evt,arg1)fprintf(“关闭绘图%d\n”,arg1);结束函数
小心回调函数中的第二个参数--evt
--仅在Qt图形工具包中部分实现:
evt
是一个类double
值:1表示左侧,2表示中间,3表示右键单击。evt
是一个包含字段的结构体钥匙
一串符号
(字符串),以及修饰符
(字符串的元胞数组)。evt
是一个类double
空矩阵。可用于所有图形对象的基本回调函数有
创建Fcn
稍后使用set
函数将永远不会被执行。默认情况下,回调函数是排队的(它们在事件队列中一个接一个地执行),除非刷新屏幕
, 图形
, 等待
,getframe
或暂停
使用函数。如果正在执行的回调调用其中一个函数,则会导致Octave刷新事件队列,从而导致正在执行的回叫被中断。
可以通过设置对象的可中断的
属性到关
。在这种情况下,Octave根据忙碌
的属性中断回调对象:
队列
(默认值)中断回调是在执行回调返回后执行的。
取消
中断回调将被丢弃。
这个可中断的
当中断回调是删除
,或数字resizefcn
或关闭指定fcn
。这些回调总是会中断正在执行的回调。
保存正在执行的回调的对象的句柄可以通过gcbo
作用此对象的祖先图形的句柄可以使用gcbf
作用
h =
gcbo ()
¶[h, fig] =
gcbo ()
¶返回当前正在执行回调的对象的句柄。
如果没有执行回调,此函数将返回空矩阵。Thishandle是从根对象属性获得的回调对象
.
当使用第二个输出参数调用时,返回包含当前正在执行回调的对象的图形的句柄。如果没有回调正在执行,则第二输出也被设置为空矩阵。
fig =
gcbf ()
¶返回包含当前正在执行回调的对象的图形的句柄。
如果没有执行回调,此函数将返回空矩阵。此函数返回的句柄与的第二个输出参数相同gcbo
.
回调同样可以添加到具有addlistener
函数如下所述。
版权所有 © 2024 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号