0

このコードに従ってコールバック関数を使用していますGUIのコールバック関数はハンドルを知りません

ただし、コールバック関数で呼び出される関数では、ハンドル構造体のデータを変更できません。

handles.waitbar.text = 'Reading images ...';
handles = readStackAndCreateFokusFunktion( ...
              handles , ...
              @(value, maxValue) ...
                    z_WaitBarUpdate(value, maxValue, handles));

と呼ばれる関数でハンドルを変更しますが、これは関数では使用されませんz_WaitBarUpdate

function handles = readStackAndCreateFokusFunktion( handles, fcallback )

handles.waitbar.text = 'Extracting number of images in calibration file ...'; 
guidata(handles.output,handles);
% calls z_WaitBarUpdate as extpected, but the text is still 'Reading images ...'
fcallback(0, 100);
4

2 に答える 2

0

コールバック関数のハンドルを簡単に更新すると、問題が解決しました。

function z_WaitBarUpdate(value, maxValue, handles)
handles=guidata(handles.output); % <- added
if ishandle(handles.waitbar.handle)
    waitbar(value/maxValue,handles.waitbar.handle,handles.waitbar.text);
end
于 2013-01-11T10:42:16.630 に答える
0

最後にハンドル構造を更新する必要があります

guidata(handles.output);

于 2014-05-31T04:31:29.740 に答える