我正在编辑一个用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
你可以看到这个函数调用自己的标志,如果变成无限循环就会停止。现在我无法将窗口调整到最小值以下。有没有人对这种行为有任何见解?
答案 0 :(得分:1)
mathworks.com上的用户回答了这个问题。他的解决方案解决了这个问我将把链接放在下面。 http://www.mathworks.com/matlabcentral/answers/21294-matlab-resizefcn-callback-fails