0
GUIDE를 사용하여 matlab에서 GUI를 생성하고 있습니다. 마우스 왼쪽 버튼을 눌렀을 때 핸들에 새로운 필드를 만들고 마우스가 움직일 때 필드를 수정하고 버튼을 놓을 때 필드를 삭제하고 싶습니다. 그러나 Windowbuttonmotionfcn 콜백은 새 필드를 보지 못합니다. 만 통과하고 있기 때문에,Windowbuttonmotionfcn 콜백이 핸들에서 새로운 필드를 보지 못합니다.
set(hObject,'windowbuttonmotionfcn',{@fh_wbmfcn,handles});
이 handles
의 값은 항상 당신이 그 시점에서 설정 한 것 :
function fig_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
set(hObject,'windowbuttonmotionfcn',{@fh_wbmfcn,handles});
set(hObject, 'windowbuttondownfcn',{@fh_wbdfcn, handles});
set(hObject, 'windowbuttonupfcn',{@fh_wbufcn, handles});
function fh_wbmfcn(hObject, eventdata, handles)
isfield(handles, 'new_field') % it is always 0, but should be 1 when button is down
function fh_wbdfcn(hObject, eventdata, handles)
handles.new_field=1;
guidata(hObject, handles);
function fh_wbufcn(hObject, eventdata, handles)
if isfield(handles, 'new_field')
handles=rmfield(handles,'new_field');
guidata(hObject, handles);
end