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