2011-11-15 3 views
4

MATLAB로 작성된 GUI를 편집하고 그림의 크기를 조정하기위한 콜백을 설정하는 OpeningFcn 줄이 있습니다.MATLAB ResizeFcn 콜백 실패

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

실제로 fpos를 계산 한 후 그림 속성을 설정하는 코드를 표시 할 수 있습니까? –

+0

fpos가 가이드의 무화과 속성에 설정되어 있습니다. 위 코드 외에도 fpos에는 변경 사항이 없습니다. 필자가 포함하지 않은 코드는 fpos의 높이와 너비를 기준으로 버튼 위치를 설정하는 미로입니다. 그러나 위의 것 이외에 fpos는 변경되지 않습니다. 사용자는 fpos를 설정하지만 MATLAB의 어딘가에 있고 코드에없는 윈도우의 크기를 조정할 수 있습니다. –

답변