GUIDE中实现一个回调函数调用另一个回调函数

12 views
Skip to first unread message

Zeke

unread,
Nov 14, 2007, 3:26:12 AM11/14/07
to The World Of MATLAB
其实,如果你稍微的看到过用Guide写的程序的话,你就会感觉到Guide中所有的Callback(回调函数)都有三个相同的参数:
hObject,eventdata,handles。

hObject--就是当前要执行Callback的元件(例如,按钮等)

eventdata--这是Matlab保留的一个参数。

handles--就是当前figure的句柄了。

所以,如果我们想调用其他函数的回调函数的话,我们就要用到一个叫feval的函数,它主要是用来执行一个函数。

假如现在figure上面有两个按钮,它们的tag属性分别设置为pb1和pb2。而pb1执行的命令是:msgbox('You pressed
pushbatton1','info'); 而我们想pb2能够执行同样的功能,那么就可以如下这么写pb2的程序:

f=@pb1_Callback; %获得pb1的函数句柄

feval(f,handles.pb1,eventdata,handles) %执行pb1的程序

通过以上的方法我们就实现了一个回调函数调用另一个回调函数,这个主要用在如果有两个控件执行同样的命令时,不用去写同样的命令。但是还有一点,如果你
有很多回调函数要执行的是另一个回调函数中的一部分命令的话,那么最好把那部分命令抽出来写成一个函数,但是函数的输入参数要是
hObject,eventdata和handles。只有这样在这个函数中你才能引用handles句柄。

Reply all
Reply to author
Forward
0 new messages