MATLAB ResizeFcn回调失败

时间:2011-11-15 17:08:10

标签: matlab matlab-guide matlab-figure

我正在编辑一个用MATLAB编写的GUI,并在OpeningFcn中有一行用于设置回调以调整图形大小。

set(hObject, 'UserData', handles.ParentFig, 'ResizeFcn',@cbFigResize, 'CloseRequestFcn', @Cancel);

为了简单起见,回调贴在下面并进行了大量修改。

function cbFigResize(src,evt)
% check if figure width is less than 600
if fpos(3) < 600 
    %set min. width to 600
    fpos(3) = 600
end
%check if figure height is less than 560
if fpos(4) <560
    % set minimum height to 560
    fpos(4) = 560;
end

我的同事运行Windows XP和早期版本的MATLAB。我运行Windows 7和MATLAB 7.12.0.635。现在,当他调整数字大小时,他们总是正确调整大小。当我运行相同的代码时,我有时会得到小于上述设置的最小宽度和高度限制的数字。我的同事说这是Windows 7中断问题。如果其他人有这个问题我们发现了一个简单但不合逻辑的解决方法,我将在下面发布。

function cbFigResize(src,evt,doStop)
if nargin < 3
    doStop = false;
end

% check if figure width is less than 600
if fpos(3) < 600 
    %set min. width to 600
    fpos(3) = 600
end
%check if figure height is less than 560
if fpos(4) <560
    % set minimum height to 560
    fpos(4) = 560;
end

if ~doStop
    cbFigResize(src,evt,true)
end

你可以看到这个函数调用自己的标志,如果变成无限循环就会停止。现在我无法将窗口调整到最小值以下。有没有人对这种行为有任何见解?

1 个答案:

答案 0 :(得分:1)

mathworks.com上的用户回答了这个问题。他的解决方案解决了这个问我将把链接放在下面。 http://www.mathworks.com/matlabcentral/answers/21294-matlab-resizefcn-callback-fails