4

MATLAB で記述された GUI を編集しており、OpeningFcn に Figure のサイズを変更するためのコールバックを設定する行があります。

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 に答える