花如月 发表于 2007-6-19 22:37

退出确认的问题

书上说: set(gcf,'CloseReqestFcn',' ') 该语句用空字符串代替'CloseReqestFcn',因此就禁止了通过关闭按钮来实现关闭窗口功能(确实可以)。set函数的第二个字符串输入可以是任何合法的Matlab语句序列。通过该字符串的设置,用户可以在关闭窗口之前,获得确认关闭的提示信息。这句没理解透,一直实现不了关闭确认的功能。
      哪位高手给解释下吧:loveliness:

w89986581 发表于 2007-6-20 10:59

set(gcf,'CloseRequestFcn','exit')

[ 本帖最后由 w89986581 于 2007-6-20 11:01 编辑 ]

花如月 发表于 2007-6-20 11:18

回复 #2 w89986581 的帖子

你的招太强了,一下子把matlab的窗口全关完了。我是想在退出这个gui界面的时候进行确认,下边是我退出菜单的callback的一部分,可以实现退出确认。如何通过在用户关闭gui界面右上角的关闭按钮也实现退出确认呢?代码怎么加?
question='确定关闭该界面?';
button=questdlg(question,'退出确认','Yes','No','No');
switch button
      case 'No'
      quit cancel;
      otherwise
      close;
end

eight 发表于 2007-6-20 12:04

原帖由 花如月 于 2007-6-20 11:18 发表 http://www.chinavib.com/forum/images/common/back.gif
你的招太强了,一下子把matlab的窗口全关完了。我是想在退出这个gui界面的时候进行确认,下边是我退出菜单的callback的一部分,可以实现退出确认。如何通过在用户关闭gui界面右上角的关闭按钮也实现退出确认呢? ...

function Untitled3
figure;
set(gcf,'CloseRequestFcn',@my_closefcn);

function my_closefcn(src,evnt)
% User-defined close request function
% to display a question dialog box
selection = questdlg('Close This Figure?',...
    'Close Request Function',...
    'Yes','No','Yes');
switch selection,
    case 'Yes',
       delete(gcf)
    case 'No'
       return
end

[ 本帖最后由 花如月 于 2007-8-1 19:05 编辑 ]

花如月 发表于 2007-6-21 21:49

谢谢8兄指点,已经实现了。不过就是不明白my_closefcn(src,evnt)的2个参数是做什么用的?因为我刚开始的时候,把2个参数忘了加结果就退不出去了。加上后正常,在用set(gcf,'CloseRequestFcn',@my_closefcn);好像也没用到输入参数

[ 本帖最后由 eight 于 2007-6-21 22:28 编辑 ]

eight 发表于 2007-6-21 22:29

原帖由 花如月 于 2007-6-21 21:49 发表 http://www.chinavib.com/forum/images/common/back.gif
谢谢8兄指点,已经实现了。不过就是不明白my_closefcn(src,evnt)的2个参数是做什么用的?因为我刚开始的时候,把2个参数忘了加结果就退不出去了。加上后正常,在用set(gcf,'CloseRequestFcn',@my_closefcn);好像 ...

这个我也不太懂,不过估计其作用类似消息传递,一个是源(也许是句柄),另一个是事件

geoer 发表于 2007-7-4 12:23

帮助里有这个问题的,关于函数句柄的语法,原话:

In Handle Graphics, functions that you want to use as function handle callbacks must define at least two input arguments in the function definition:
The handle of the object generating the callback (the source of the event)
The event data structure (can be empty for some callbacks)

花如月 发表于 2007-7-4 21:40

回复 #7 geoer 的帖子

谢谢楼上的,我英文不好。所以很少看英文的帮助文档,以后得加强学习了

pxq911 发表于 2007-8-1 16:59

我怎么实现不了

http://forum.vibunion.com/forum/viewthread.php?tid=46800&page=1#pid245354

你好啊!
你写的这个程序添加到哪里?我怎么实现不了?

花如月 发表于 2007-8-1 17:09

回复 #9 pxq911 的帖子

4楼正解

pxq911 发表于 2007-8-1 18:19

摸索了一个小时,终于解决了!

终于解决了,太爽了!!!
    在function varargout = pxq3_OutputFcn(hObject, eventdata, handles)添加相应代码就可以解决了!
    以下是我的程序:
    function varargout = pxq3_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
set(gcf,'CloseRequestFcn',@my_closefcn);   %关闭窗口程序
function my_closefcn(src,evnt)
global System_Data;
if System_Data
    ErrorDlg('正在运行仿真,请停止!');
    return;
else close;
end

submariner 发表于 2009-3-2 12:44

4楼真乃高人啊
页: [1]
查看完整版本: 退出确认的问题