15.4.4回调

回调函数可以与图形对象相关联,并在某些事件发生后触发。所有回调函数的基本结构体是

函数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图形工具包中部分实现:

可用于所有图形对象的基本回调函数有

默认情况下,回调函数是排队的(它们在事件队列中一个接一个地执行),除非刷新屏幕, 图形, 等待,getframe暂停使用函数。如果正在执行的回调调用其中一个函数,则会导致Octave刷新事件队列,从而导致正在执行的回叫被中断。

可以通过设置对象的可中断的属性到。在这种情况下,Octave根据忙碌的属性中断回调对象:

队列(默认值)

中断回调是在执行回调返回后执行的。

取消

中断回调将被丢弃。

这个可中断的当中断回调是删除,或数字resizefcn关闭指定fcn。这些回调总是会中断正在执行的回调。

保存正在执行的回调的对象的句柄可以通过gcbo作用此对象的祖先图形的句柄可以使用gcbf作用

 
: h = gcbo ()
: [h, fig] = gcbo ()

返回当前正在执行回调的对象的句柄。

如果没有执行回调,此函数将返回空矩阵。Thishandle是从根对象属性获得的回调对象.

当使用第二个输出参数调用时,返回包含当前正在执行回调的对象的图形的句柄。如果没有回调正在执行,则第二输出也被设置为空矩阵。

详见: gcbf, gco, gca, gcf, get, set.

 
: fig = gcbf ()

返回包含当前正在执行回调的对象的图形的句柄。

如果没有执行回调,此函数将返回空矩阵。此函数返回的句柄与的第二个输出参数相同gcbo.

详见: gcbo, gcf, gco, gca, get, set.

回调同样可以添加到具有addlistener函数如下所述。


版权所有 © 2024 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号