我是靠谱客的博主 笨笨画笔,最近开发中收集的这篇文章主要介绍回调函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

所有图形对象的回调函数

回调函数意义
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确定执行那个函数开关的参量,他可以使字符串,也可以是代码或数字。

这里写代码片

最后

以上就是笨笨画笔为你收集整理的回调函数的全部内容,希望文章能够帮你解决回调函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部