回调函数可以与图形对象相关联,并在某些事件发生后触发。所有回调函数的基本结构体是
函数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-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2