4

我正在编辑一个用 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

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

4

1 回答 1

1

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

于 2011-11-15T21:43:52.207 回答