2012-04-02 8 views
3

私はMatlabのガイドでGUIを作っています。私はインポイントでポイントを配置しています。私はaddNewPositionCallbackを使用して、私の 'ポイントリスト'を更新することができます。私がコールバックとして与える更新機能に与えられた引数の1つは、 'handles'オブジェクトです。しかし、Matlabはこれを値で渡します。したがって、コールバックが呼び出されると、そこにハンドルオブジェクトがありますが、古いバージョンです。私はハンドルオブジェクトへのポインタのようなものを持っていたいと思います。Matlab GUI、ハンドルオブジェクトが必要

またはもっと一般的に:私はパラメータとして持っていない関数のどこかで 'handles'オブジェクトにアクセスしたいと思います。

編集:

addNewPositionCallback(testh,@(pos) updatePosition(pos, hObject, handles));

そして、私はpointlistを持っている:私はこのようなコールバックとして追加

function updatePosition(pos, hObject, handles)

: だから私はこのようになり、コールバック関数を持っていますハンドル内には、handles.pointlist。これには5ポイントが含まれている必要がありますが、最初のポイントのupdatePosition呼び出しがある場合、リストには1つのポイントしか含まれていません。ハンドルは更新されていないようです。

答えて

0

GUIDEを使用してGUIを設計する場合、handles.outputはハンドルをメインインターフェイスに格納します。 つまり、あなたのコールバックでこの行を追加する場合:

handles=guidata(handles.output); 

は、それが現在のバージョンにあなたのハンドルを更新する必要があります。あなたがここにすべてのこれらのいくつかの詳細を得ることができます :JavaScriptのような http://www.matlabtips.com/guide-me-in-the-guide/

3

を、MATLABスクリプトは、関数ハンドルとしてクロージャを作成することができます。つまり、変数を '取り込む'ことができます。ハンドルオブジェクトにアクセスできるコンテキストでは、updatePositionを作成できます。このようにする必要があります:

H = handles.figure1; % get the figure handle 
updatePosition = @(p) get(guihandles(H)... % the guihandles(H) contains the handles structure of the figure. Do whatever you need with it. 

addNewPositionCallback(testh,updatePosition); 
関連する問題