回调函数

所有图形对象的回调函数

回调函数意义
ButtonDownFcn在对象上单击鼠标左键执行的回调函数
CreateFcn对象创建时执行的回调函数
DeleteFcn对象删除时执行的回调函数

图形窗口的回调函数

回调函数意义
CloseRequestFcn图形窗口接收到关闭请求时执行的回调函数,如果修改其值将不能通过点击关闭关掉图形窗口
KeyPressFcn光标处于图形窗口内,且用户按下某个按键时执行的回调函数
ResizeFcn用户调整图形窗口大小时执行的回调函数
WindowButtonDownFcn用户在图形窗口背景区,不可用空间或坐标轴背景区单击鼠标时执行的回调函数
WindowButtonMotionFcn用户在图形窗口内拖动鼠标时执行的回调函数
WindowsButtonUpFcn用户在图形窗内单击鼠标后再次释放鼠标按钮执行的回调函数

中断回调规则
    根据指针在图形中的区域的不同,MATLAB决定哪一个回调将被激励。如果指针实在句柄对象内,如同Position属性所确定的那样,那么指针就是在对象上;如果指针不在一个对象上,而在对象选择的区域内,则指针靠近对象;如果指针在图形内但是既不靠近也不再另一个对象上,则可以认为指针关掉其它对象;如果对若干对象及选择区域相重叠,重叠顺序就决定了选择顺序。
   uimenu对象没有外部的选择区域,指针要么在uimenu上,要么不在其上。uicontrol对象越过图基位置,在各个方向延伸大概5个像素有一个选择区域,指针可以靠近或者在控制框上。
    一旦回调开始执行,通常都在下一个回调事件处理之前运行完毕。将Interruptble属性设置为yes可以改变这种默认行为,从而当正在执行的回调遇到drawnow,figure,getframe或pause命令时,允许处理的回调时间悬挂起来。事件队列执行计算操作或设置对象属性的命令一经发出,MATLAB便经行处理,而设计图形窗口输入或输出的命令则生成时间。事件包括产生回调的指针移动和鼠标按钮动作,以及重新新绘制图形的命令。
1. 回调处理
    回调遇到drawnow,getframe,pause或figure命令之前一直执行,不含有这些特殊命令的回调不会被中断,一旦遇到这些命令之一,就停止执行回调,将其悬挂起来,并检查事件队列中每个悬挂的时间。如果产生悬挂回调对象的Interruptible属性设置为yes,则在被悬挂的回调恢复之前按序处理所有悬挂;如果Interruptible属性设置为no,即只处理悬挂的重画事件,放弃回调事件。
2.防止中断
    即使在执行回调是不能被中断的,当它遇到drawnow,figure,getframe或pause命令时,仍然处理悬挂的重画事件。可以通过避免在回调中使用所有这些特殊命令,消除此类事件。如果回调中需要这些特殊命令,但又不要任何悬挂事件甚至刷新时间来中断回调,则可以使用drawnow。
3.drawback
    drawnow命令迫使MATLAB更新屏幕,只要MATLAB回到命令提示,或执行drawnow,figure,getframe或pause命令,屏幕就更新。在回调中将drawnow包含在一个特殊命令之前,就具有清除事件队列的效果,防止刷新时间以及回调时间终端会掉。
    另外如果对象的BusyAction属性被摄值为cancel,则中断回调执行的事件被忽略;如果BusyAction属性被摄值为queue,那么中断回调执行的事件将被保留在事件队列中,直到被终端的回调执行完毕后响应该事件为止。
    利用单独的M文件递归地调用该文件,既可以避免多个M文件的复杂性,又可以利用函数的优点。使用switch case或if elsif语句,可将回调函数装入调用函数内。通常这种函数调用的结构为Function guifun(switch)
    其中switch确定执行那个函数开关的参量,他可以使字符串,也可以是代码或数字。

这里写代码片
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值