2011-11-15 7 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が計算された後実際にFigureプロパティを設定しているコードを表示するようにポストを拡張できますか? –

+0

ガイドのfigプロパティにfposが設定されています。上記のコードに加えて、fposに変更はありません。私が含まれていないコードは、fposの高さと幅に基づいてボタンの位置を設定するだけの迷路です。しかし、上記のもの以外には、fposに変更はありません。ユーザはfposを設定するウィンドウのサイズを変更することができますが、これはMATLABのどこかにあり、私のコードではありません。 –

答えて