Bonjour,

Dans mon programme principal, je définis un bouton poussoir:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
    uicontrol(...
      'Parent',h_lat_panel,...
      'Units','normalized',...
      'Position',[0.3,0.9,0.4,.025],...
      'BackgroundColor',0.8*[0.4314,0.5882,0.8431],...
      'ForegroundColor',[1,1,1],...
      'HitTest','off',...
      'Style','pushbutton',...
      'FontSize',10,...
      'FontWeight','bold',...
      'String','Ouvrir',...
      'Callback',@OpenFile);
la fonction appelée par le callback est de la forme:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
[CarteControle] = function OpenFile(~,~)
...
end
Est-il possible de récupérer la variable CarteControle au niveau de mon programme principal ? Et si oui, quelle syntaxe utiliser pour définir le 'Callback' de mon bouton poussoir ?

En fait, j'ai trouvé un article sur le web:

http://matlabfr.wordpress.com/2007/11/15/callbacks/

où il est écrit que l'utilisation d'un callback sous la forme d'un handle de fonction ne permet ni de passer des arguments d'entrée, ni de récupérer un argument de sortie.
Pourtant, il est bien possible de passer des arguments d'entrée avec la syntaxe:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
...
'Callback',{@OpenFile,screen},...
...
la fonction OpenFile devant être écrite ainsi:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
[CarteControle] = function OpenFile(~,~,screendata)
...
end
Du coup, comme il est en fait possible de passer des arguments d'entrée, je me dis qu'il doit être possible de récupérer un argument de sortie.

Si non, comment faire ?

Par avance, merci
Luis


matlab R2010a
Windows XP sp3