2011-11-15 41 views
4

我正在編寫一個用MATLAB編寫的圖形用戶界面,並且在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中的某處,而不是我的代碼。 –

回答