Осуществляйте обмен данными среди обратных вызовов

Обзор методов совместного использования данных

Много приложений содержат взаимозависимые средства управления, меню и графические объекты. Поскольку каждая функция обратного вызова имеет свой собственный осциллограф, необходимо явным образом осуществлять обмен данными с теми частями приложения, которое должно получить доступ к ней. Приведенная ниже таблица описывает несколько различных методов для обмена данными в рамках вашего приложения.

МетодОписаниеТребования и компромиссы
Храните данные в UserData или других свойствах объектов

Получите или установите значения свойств непосредственно через объект компонента.

Все компоненты пользовательского интерфейса имеют свойство UserData, которое может хранить любые данные MATLAB®.

  • Требует, чтобы доступ к компоненту установил или получил свойства.

  • UserData содержит только одну переменную за один раз, но можно сохранить несколько значений как массив struct или массив ячеек.

Храните данные как данные приложения

Объединенные данные с определенным компонентом с помощью функции setappdata. Можно получить доступ к нему позже использование функции getappdata.

  • Требует, чтобы доступ к компоненту установил или получил данные приложения.

  • Может совместно использовать несколько переменных.

Создание вложенных функций обратного вызова (программные приложения)

Вложите свои функции обратного вызова в вашей основной функции. Это предоставляет ваш доступ к функциям обратного вызова ко всем переменным в основной функции.

  • Требует, чтобы функции обратного вызова были закодированы в том же файле как основная функция.

  • Не рекомендуемый для приложений GUIDE.

  • Может совместно использовать несколько переменных.

Хранение Данных Используя Функцию guidata

Осуществляйте обмен данными с окном рисунка с помощью функции guidata.

  • Хранилища или получают данные через любой компонент пользовательского интерфейса.

  • Хранилища только одна переменная за один раз, но можно сохранить несколько значений как массив struct или массив ячеек.

Храните данные в UserData или других свойствах объектов

Компоненты пользовательского интерфейса содержат полезную информацию в своих свойствах. Например, можно найти текущее положение ползунка путем запроса его свойства Value. Кроме того, все компоненты имеют свойство UserData, которое может сохранить любую переменную MATLAB. Все функции обратного вызова могут получить доступ к значению, сохраненному в свойстве UserData, пока те функции могут получить доступ к компоненту.

Совместное использование UserData в приложениях, созданных программно

Используйте запись через точку, component.propertyname, чтобы получить или установить значения свойств программно. Запись через точку работает в R2014b и более поздних релизах. Этот код получает и определяет имя фигуры.

hfig = figure;
figname = hfig.Name;
hfig.Name = 'My Window';
Если вы используете более раннюю версию, используйте вместо этого функции get и set:
hfig = figure;
figname = get(hfig,'Name');
set(hfig,'Name','My Window');

Если ваш код не имеет прямого доступа к компоненту, используйте функцию findobj, чтобы искать тот компонент. Если поиск успешен, findobj возвращает компонент, как выведено. Затем можно получить доступ к свойствам компонента.

Следующий код приложения использует свойство UserData поделиться информацией о ползунке. Чтобы видеть, как это работает, скопируйте и вставьте этот код в редактор и запустите его.

function my_slider()
hfig = figure();
slider = uicontrol('Parent', hfig,'Style','slider',...
         'Units','normalized',...
         'Position',[0.3 0.5 0.4 0.1],...
         'Tag','slider1',...
         'UserData',struct('val',0,'diffMax',1),...
         'Callback',@slider_callback);
     
button = uicontrol('Parent', hfig,'Style','pushbutton',...
         'Units','normalized',...
         'Position',[0.4 0.3 0.2 0.1],...
         'String','Display Difference',...
         'Callback',@button_callback);
end

function slider_callback(hObject,eventdata)
	sval = hObject.Value;
	diffMax = hObject.Max - sval;
	data = struct('val',sval,'diffMax',diffMax);
	hObject.UserData = data;
	% For R2014a and earlier: 
	% sval = get(hObject,'Value');  
	% maxval = get(hObject,'Max');  
	% diffMax = maxval - sval;      
	% data = struct('val',sval,'diffMax',diffMax);   
	% set(hObject,'UserData',data);   

end

function button_callback(hObject,eventdata)
	h = findobj('Tag','slider1');
	data = h.UserData;
	% For R2014a and earlier: 
	% data = get(h,'UserData'); 
	display([data.val data.diffMax]);
end
Когда пользователь перемещает ползунок, slider_callback использует эти команды, чтобы хранить данные в структуре:

  • data = struct('val',sval,'diffMax',diffMax) хранит значения, sval и diffMax, в структуре под названием data.

  • hObject.UserData = data хранит значение data в свойстве UserData ползунка.

Когда пользователь кликает по кнопке, button_callback использует эти команды, чтобы получить данные:

  • h = findobj('Tag','slider1') находит компонент ползунка.

  • data = h.UserData получает значение свойства UserData ползунка.

Совместное использование UserData в приложениях GUIDE

Чтобы настроить приложение GUIDE для совместного использования данных о ползунке со свойством UserData, выполните эти шаги:

  1. В Командном окне введите guide.

  2. В диалоговом окне GUIDE Quick Start выберите Blank GUI (Default). Затем нажмите OK.

  3. Отобразите имена компонентов пользовательского интерфейса в палитре элементов:

    1. Выберите File> Preferences> GUIDE.

    2. Выберите Show names in component palette.

    3. Нажмите OK.

  4. Выберите инструмент кнопки из палитры элементов в левой стороне Редактора макетов и перетащите его в область размещения.

  5. Выберите инструмент ползунка из палитры элементов в левой стороне Редактора макетов и перетащите его в область размещения.

  6. Выберите File> Save. Сохраните пользовательский интерфейс как myslider.fig. MATLAB открывает файл кода в Редакторе.

  7. Установите начальное значение свойства UserData во вводной функции, myslider_OpeningFcn. Эта функция выполняется непосредственно перед тем, как пользовательский интерфейс видим пользователям.

    В myslider_OpeningFcn вставьте эти команды сразу после команды, handles.output = hObject.

    data = struct('val',0,'diffMax',1);
    set(handles.slider1,'UserData',data);
    
    После того, как вы добавите команды, myslider_OpeningFcn выглядит так.
    function myslider_OpeningFcn(hObject, eventdata, handles, varargin)
    % This function has no output args, see OutputFcn.
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    % varargin   command line arguments to junk (see VARARGIN)
    
    % Choose default command line output for myslider
    handles.output = hObject;
    data = struct('val',0,'diffMax',1);
    set(handles.slider1,'UserData',data);
    
    % Update handles structure
    guidata(hObject, handles);
    
    % UIWAIT makes myslider wait for user response
    % uiwait(handles.figure1);
    
    Заметьте, что handles является входным параметром к myslider_OpeningFcn. Переменная handles является структурой, которая содержит все компоненты в пользовательском интерфейсе. Каждое поле в этой структуре соответствует отдельному компоненту. Каждое имя поля совпадает со свойством Tag соответствующего компонента. Таким образом handles.slider1 является компонентом ползунка в этом пользовательском интерфейсе. Команда, set(handles.slider1,'UserData',data) хранит переменную, data, в свойстве UserData ползунка.

  8. Добавьте код в коллбэк ползунка для изменения данных. Добавьте эти команды в конец функции, slider1_Callback.

    maxval = get(hObject,'Max');  
    sval = get(hObject,'Value');  
    diffMax = maxval - sval;   
    data = get(hObject,'UserData');
    data.val = sval;
    data.diffMax = diffMax;
    % Store data in UserData of slider
    set(hObject,'UserData',data);
    После того, как вы добавите команды, slider1_Callback выглядит так.
    % --- Executes on slider movement.
    function slider1_Callback(hObject, eventdata, handles)
    % hObject    handle to slider1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    
    % Hints: get(hObject,'Value') returns position of slider
    %        get(hObject,'Min') and get(hObject,'Max') to determine range of slider
    maxval = get(hObject,'Max');  
    sval = get(hObject,'Value');  
    diffMax = maxval - sval;   
    data = get(hObject,'UserData');
    data.val = sval;
    data.diffMax = diffMax;
    % Store data in UserData of slider
    set(hObject,'UserData',data);
    
    Заметьте, что hObject является входным параметром к функции slider1_Callback. hObject всегда является компонентом, который инициировал коллбэк (ползунок, в этом случае). Таким образом, set(hObject,'UserData',data), хранит переменную data в свойстве UserData ползунка.

  9. Добавьте код в коллбэк кнопки для того, чтобы получить данные. Добавьте эти команды в конец функции, pushbutton1_Callback.

    % Get UserData from the slider
    data = get(handles.slider1,'UserData');
    currentval = data.val;
    diffval = data.diffMax;
    display([currentval diffval]);
    После того, как вы добавите команды, pushbutton1_Callback выглядит так.

    % --- Executes on button press in pushbutton1.
    function pushbutton1_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    
    % Get UserData from the slider
    data = get(handles.slider1,'UserData');
    currentval = data.val;
    diffval = data.diffMax;
    display([currentval diffval]);

    Этот код использует структуру handles, чтобы получить доступ к ползунку. Команда, data = get(handles.slider1,'UserData'), получает свойство UserData ползунка. Затем функция display отображает сохраненные значения.

  10. Сохраните свой код путем нажатия Save в редакторе Тулстрипе.

Храните данные как данные приложения

Чтобы сохранить данные приложения, вызовите функцию setappdata:

setappdata(obj,name,value);
Первый вход, obj, является объектом компонента, в котором можно хранить данные. Второй вход, name, является дружественным именем, которое описывает значение. Третий вход, value, является значением, которое вы хотите сохранить.

Чтобы получить данные приложения, используйте функцию getappdata:

data = getappdata(obj,name);
Компонент, obj, должен быть объектом компонента, содержащим данные. Второй вход, name, должен совпадать с именем, вы раньше хранили данные. В отличие от свойства UserData, которое только содержит только одну переменную, можно использовать setappdata, чтобы сохранить несколько переменных.

Совместное использование данных приложения в приложениях, созданных программно

Это приложение использует данные приложения, чтобы совместно использовать два значения. Чтобы видеть, как это работает, скопируйте и вставьте этот код в редактор и запустите его.

function my_slider()
hfig = figure();
setappdata(hfig,'slidervalue',0);
setappdata(hfig,'difference',1);

slider = uicontrol('Parent', hfig,'Style','slider',...
         'Units','normalized',...
         'Position',[0.3 0.5 0.4 0.1],...
         'Tag','slider1',...
         'Callback',@slider_callback);
     
button = uicontrol('Parent', hfig,'Style','pushbutton',...
         'Units','normalized',...
         'Position',[0.4 0.3 0.2 0.1],...
         'String','Display Values',...
         'Callback',@button_callback);
end

function slider_callback(hObject,eventdata)
	diffMax = hObject.Max - hObject.Value;
	setappdata(hObject.Parent,'slidervalue',hObject.Value);
	setappdata(hObject.Parent,'difference',diffMax);
	% For R2014a and earlier: 
	% maxval = get(hObject,'Max');  
	% currval = get(hObject,'Value');  
	% diffMax = maxval - currval;   
	% parentfig = get(hObject,'Parent');  
	% setappdata(parentfig,'slidervalue',currval); 
	% setappdata(parentfig,'difference',diffMax); 
end

function button_callback(hObject,eventdata)
	currentval = getappdata(hObject.Parent,'slidervalue');
	diffval = getappdata(hObject.Parent,'difference');
	% For R2014a and earlier:
	% parentfig = get(hObject,'Parent');
	% currentval = getappdata(parentfig,'slidervalue');
	% diffval = getappdata(parentfig,'difference');

	display([currentval diffval]);
end
Когда пользователь перемещает ползунок, функция slider_callback вычисляет diffMax. Затем это использует эти команды, чтобы изменить данные приложения:

  • setappdata(hObject.Parent,'slidervalue',hObject.Value) хранит текущее значение ползунка в фигуре, использующей имя, 'slidervalue'. В этом случае hObject.Parent является фигурой.

  • setappdata(parentfig,'difference',diffMax) хранит diffMax в фигуре, использующей имя, 'difference'.

Когда пользователь кликает по кнопке, функция button_callback получает данные с помощью этих команд:

  • currentval = getappdata(hObject.Parent,'slidervalue') получает текущее значение ползунка от фигуры. В этом случае hObject.Parent является фигурой.

  • diffval = getappdata(hObject.Parent,'difference') получает значение различия от фигуры.

Совместное использование данных приложения в приложениях GUIDE

Чтобы настроить приложение GUIDE для совместного использования данных приложения, выполните эти шаги:

  1. В Командном окне введите guide.

  2. В диалоговом окне GUIDE Quick Start выберите Blank GUI (Default). Затем нажмите OK.

  3. Отобразите имена компонентов пользовательского интерфейса в палитре элементов:

    1. Выберите File> Preferences> GUIDE.

    2. Выберите Show names in component palette.

    3. Нажмите OK.

  4. Выберите инструмент кнопки из палитры элементов в левой стороне Редактора макетов и перетащите его в область размещения.

  5. Выберите инструмент ползунка из палитры элементов в левой стороне Редактора макетов и перетащите его в область размещения.

  6. Выберите File> Save. Сохраните пользовательский интерфейс как myslider.fig. MATLAB открывает файл кода в Редакторе.

  7. Установите начальное значение данных приложения во вводной функции, myslider_OpeningFcn. Эта функция выполняется непосредственно перед тем, как пользовательский интерфейс видим пользователям. В myslider_OpeningFcn вставьте эти команды сразу после команды, handles.output = hObject.

    setappdata(handles.figure1,'slidervalue',0); 
    setappdata(handles.figure1,'difference',1);
    После того, как вы добавите команды, myslider_OpeningFcn выглядит так.
    function myslider_OpeningFcn(hObject,eventdata,handles,varargin)
    % This function has no output args, see OutputFcn.
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    % varargin   command line arguments to junk (see VARARGIN)
    
    % Choose default command line output for junk
    handles.output = hObject;
    setappdata(handles.figure1,'slidervalue',0); 
    setappdata(handles.figure1,'difference',1);
    
    % Update handles structure
    guidata(hObject, handles);
    
    % UIWAIT makes junk wait for user response (see UIRESUME)
    % uiwait(handles.figure1);
    
    Заметьте, что handles является входным параметром к myslider_OpeningFcn. Переменная handles является структурой, которая содержит все компоненты в пользовательском интерфейсе. Каждое поле в этой структуре соответствует отдельному компоненту. Каждое имя поля совпадает со свойством Tag соответствующего компонента. В этом случае handles.figure1 является объектом фигуры. Таким образом setappdata может использовать, это изображает объект хранить данные.

  8. Добавьте код в коллбэк ползунка для изменения данных. Добавьте эти команды в конец функции, slider1_Callback.

    maxval = get(hObject,'Max');  
    currval = get(hObject,'Value');  
    diffMax = maxval - currval;   
    % Store application data
    setappdata(handles.figure1,'slidervalue',currval); 
    setappdata(handles.figure1,'difference',diffMax);
    После того, как вы добавите команды, slider1_Callback выглядит так.
    function slider1_Callback(hObject, eventdata, handles)
    % hObject    handle to slider1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    
    % Hints: get(hObject,'Value') returns position of slider
    %        get(hObject,'Min') and get(hObject,'Max') to determine range of slider
    maxval = get(hObject,'Max');  
    currval = get(hObject,'Value');  
    diffMax = maxval - currval;   
    % Store application data
    setappdata(handles.figure1,'slidervalue',currval); 
    setappdata(handles.figure1,'difference',diffMax);
    Эта функция обратного вызова имеет доступ к структуре handles, таким образом, команды setappdata хранят данные в handles.figure1.

  9. Добавьте код в коллбэк кнопки для того, чтобы получить данные. Добавьте эти команды в конец функции, pushbutton1_Callback.

    % Retrieve application data
    currentval = getappdata(handles.figure1,'slidervalue');
    diffval = getappdata(handles.figure1,'difference');
    display([currentval diffval]);
    После того, как вы добавите команды, pushbutton1_Callback выглядит так.
    % --- Executes on button press in pushbutton1.
    function pushbutton1_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    
    % Retrieve application data
    currentval = getappdata(handles.figure1,'slidervalue');
    diffval = getappdata(handles.figure1,'difference');
    display([currentval diffval]);
    Эта функция обратного вызова имеет доступ к структуре handles, таким образом, команды getappdata получают данные от handles.figure1.

  10. Сохраните свой код путем нажатия Save в редакторе Тулстрипе.

Создание вложенных функций обратного вызова (программные приложения)

Можно вложить функции обратного вызова в основной функции программного приложения. Когда вы делаете это, вложенные функции обратного вызова совместно используют рабочую область с основной функцией. В результате вложенные функции имеют доступ ко всем компонентам пользовательского интерфейса и переменным, заданным в основной функции. Следующий пример кода использует вложенные функции, чтобы осуществлять обмен данными о положении ползунка. Чтобы видеть, как это работает, скопируйте и вставьте этот код в редактор и запустите его.

function my_slider()
	hfig = figure();
	data = struct('val',0,'diffMax',1);
	slider = uicontrol('Parent', hfig,'Style','slider',...
         'Units','normalized',...
         'Position',[0.3 0.5 0.4 0.1],...
         'Tag','slider1',...
         'Callback',@slider_callback);
     
	button = uicontrol('Parent', hfig,'Style','pushbutton',...
         'Units','normalized',...
         'Position',[0.4 0.3 0.2 0.1],...
         'String','Display Difference',...
         'Callback',@button_callback);

	function slider_callback(hObject,eventdata)
		sval = hObject.Value;
		diffMax = hObject.Max - sval;
		% For R2014a and earlier:
		% sval = get(hObject,'Value');
		% maxval = get(hObject,'Max');
		% diffMax = maxval - sval;

		data.val = sval;
		data.diffMax = diffMax;
	end

	function button_callback(hObject,eventdata)
		display([data.val data.diffMax]);
	end
end
Основная функция задает массив struct под названием data. Когда пользователь перемещает ползунок, функция slider_callback обновляет поля val и diffMax структуры data. Когда конечный пользователь кликает по кнопке, функция button_callback отображает значения, сохраненные в data.

Примечание

Вложенные функции не рекомендуются для приложений GUIDE.

Хранение Данных Используя Функцию guidata

Функция guidata обеспечивает способ осуществлять обмен данными с окном рисунка. Можно сохранить или получить данные в любом коллбэке через компонент hObject. Это означает, что, в отличие от работы с UserData или данными приложения, вам не нужен доступ к одному определенному компоненту, чтобы установить или получить данные. Вызовите guidata с двумя входными параметрами, чтобы хранить данные:

guidata(object_handle,data);
Первый вход, object_handle, является любым компонентом пользовательского интерфейса (обычно hObject). Второй вход, data, является переменной, чтобы сохранить. Каждый раз, когда вы вызываете guidata с помощью двух входных параметров, MATLAB перезаписывает любые ранее хранимые данные. Это означает, что можно только сохранить одну переменную за один раз. Если вы хотите совместно использовать несколько значений, то храните данные как массив struct или массив ячеек.

Чтобы получить данные, вызовите guidata с помощью одного входного параметра и одного выходного аргумента:

data = guidata(object_handle);
Компонент, который вы задаете, чтобы хранить данные, не должен быть тем же компонентом, который вы используете, чтобы получить его.

Если ваши данные хранятся как массив struct или массив ячеек, и вы хотите обновить один элемент, не изменяя другие элементы, затем получить данные и заменить его на измененный массив:

data = guidata(hObject);
data.myvalue = 2;
guidata(hObject,data);

Использование guidata в Приложениях, созданных Программно

Чтобы использовать guidata в программном приложении, храните данные с некоторыми начальными значениями в основной функции. Затем можно получить и изменить данные в любой функции обратного вызова.

Следующий код является простым примером программного приложения, которое использует guidata, чтобы совместно использовать структуру, содержащую два поля. Чтобы видеть, как это работает, скопируйте и вставьте этот код в редактор и запустите его.

function my_slider()
hfig = figure();
guidata(hfig,struct('val',0,'diffMax',1));
slider = uicontrol('Parent', hfig,'Style','slider',...
         'Units','normalized',...
         'Position',[0.3 0.5 0.4 0.1],...
         'Tag','slider1',...
         'Callback',@slider_callback);
     
button = uicontrol('Parent', hfig,'Style','pushbutton',...
         'Units','normalized',...
         'Position',[0.4 0.3 0.2 0.1],...
         'String','Display Values',...
         'Callback',@button_callback);
end

function slider_callback(hObject,eventdata)
	data = guidata(hObject);
	data.val = hObject.Value;
	data.diffMax = hObject.Max - data.val;
	% For R2014a and earlier:
	% data.val = get(hObject,'Value');
	% maxval = get(hObject,'Max');
	% data.diffMax = maxval - data.val;

	guidata(hObject,data);
end

function button_callback(hObject,eventdata)
	data = guidata(hObject);
	display([data.val data.diffMax]);
end
Когда пользователь перемещает ползунок, функция slider_callback выполняет эти команды, чтобы получить и изменить хранимые данные:

  • data = guidata(hObject) получает хранимые данные как структуру.

  • data.diffMax = maxval - data.val изменяет поле diffMax в структуре.

  • guidata(hObject,data) хранит измененную структуру.

Когда пользователь кликает по кнопке, вызовы функции button_callback guidata, чтобы получить копию сохраненной структуры. Затем это отображает эти два значения, сохраненные в структуре.

Использование guidata в Приложениях GUIDE

GUIDE использует функцию guidata, чтобы сохранить структуру под названием handles, который содержит все компоненты пользовательского интерфейса. MATLAB передает массив handles каждой функции обратного вызова. Если вы хотите использовать guidata, чтобы совместно использовать дополнительные данные, то добавьте поля в структуру handles во вводной функции. Вводная функция является функцией, определяемой около верхней части вашего файла кода, который имеет _OpeningFcn на имя.

Чтобы изменить ваши данные в функции обратного вызова, измените структуру handles, и затем сохраните его с помощью функции guidata. Эта функция обратного вызова ползунка показывает, как изменить и сохранить структуру handles в функции обратного вызова GUIDE.

function slider1_Callback(hObject, eventdata,handles)
% hObject   handle to slider1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles   structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range
	handles.myvalue = 2;
	guidata(hObject,handles);
end 

Пример GUIDE: Совместное использование Данных Ползунка Используя guidata

Вот предварительно созданное приложение GUIDE, которое использует функцию guidata, чтобы осуществлять обмен данными между ползунком и текстовым полем. Когда вы перемещаете ползунок, номер, отображенный в текстовом поле, изменяется, чтобы показать новое положение ползунка.

Пример GUIDE: Осуществляйте обмен данными между двумя приложениями

Вот предварительно созданное приложение GUIDE, которое использует данные приложения и функцию guidata, чтобы осуществлять обмен данными между двумя диалоговыми окнами. При вводе текст во втором диалоговом окне и нажимаете ОК, изменения названия кнопки в первом диалоговом окне.

В changeme_main.m функция buttonChangeMe_Callback выполняет эту команду, чтобы отобразить второе диалоговое окно:

changeme_dialog('changeme_main', handles.figure)

Входной параметр handles.figure является объектом Figure для changeme_main диалогового окна.

Функция changeme_dialog получает структуру handles из объекта Figure. Таким образом целый набор компонентов в changeme_main диалоговом окне доступен второму диалоговому окну.

Пример GUIDE: Осуществляйте обмен данными среди трех приложений

Вот предварительно созданное приложение GUIDE, которое использует guidata и UserData, чтобы осуществлять обмен данными среди трех окон приложения. Большое окно является редактором иконок, который принимает информацию из окон палитры инструментов и цветовой палитры.

В guide_inconeditor.m функциональный guide_iconeditor_OpeningFcn содержит эту команду:

colorPalette = guide_colorpalette('iconEditor', hObject)

Аргументы:

  • 'iconEditor' указывает, что коллбэк в guide_iconEditor окне инициировал выполнение функции.

  • hObject является объектом Figure для guide_iconEditor окна.

  • colorPalette является объектом Figure для guide_colorPalette окна.

Точно так же guide_iconeditor_OpeningFcn вызывает функцию guide_toolpalette с подобными аргументами ввода и вывода.

Передача объекта Figure между этими функциями позволяет guide_iconEditor окну получать доступ к структуре handles других двух окон. Аналогично, другие два окна могут получить доступ к структуре handles для guide_iconEditor окна.

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте