ここでMATLABの達人に質問があります。
これが私のコードです(ここでの問題に関連するコード行のみを示しています):
mainProcess(hObject, handles)
handles.Checkpoint2 =1;
guidata(hObject, handles);
function testGUI1_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
handles.Checkpoint1 = 1;
mainProcess(hObject, handles);
handles.Checkpoint3 = 1; //EDIT: Checkpoint2 is also not visible at this line
guidata(hObject, handles);
handles.Checkpoint4 = 1;
function saveAndContinueButton_Callback(hObject, eventdata, handles)
(breakpoint here) --> faceDatabase(handles.currentImageIteration).lookingTowardsCamera=handles.lookingAtCamera;
したがって、上記のコードでは、コードのさまざまな部分でこれらの「チェックポイント」を作成し、[保存して続行]ボタンを個別にクリックするとどのチェックポイントが表示されるかを確認しています...チェックポイント1は、mainProcessというカスタム関数を呼び出す前に作成されます、Checkpoint2はmainProcessのコード内に作成され、Checkpoint3はmainProcessの実行が終了した後に作成され、コントロールはそれを呼び出した関数testGUI1_OpeningFcnに戻ります...そしてCheckpoint4はtestGUI1_OpeningFcn内に作成されますが、handles構造体はtestGUI1_OpeningFcnコードで更新されました。
だから私の質問はこれです、ボタンがクリックされ、その時点で何が表示されているかを見ると、チェックポイント1と3はボタンのコールバックコードに表示されますが、チェックポイント2と4は表示されません...チェックポイント4は表示されないことを理解していますtestGUI1_OpeningFcnのコードでhandles構造が更新された後に作成されたため、表示されます...しかし、mainProcessのコードの最後にある場合でも、Checkpoint2が表示されないのはなぜですか。
guidata(hObject, handles);
mainProcess関数がhObjectとハンドルの両方への参照を取得しているので、書き込みアクセス権が必要ですよね?
では、なぜCheckpoint2がボタンのコールバックコードに表示されないのですか..?
手がかりはありますか?
編集:コントロールが呼び出し元に返された直後に、mainProcessの呼び出し元の関数内でもCheckpoint2が表示されているかどうかを確認しようとしましたが、Checkpoint2は表示されていません(上記のコードのEDITを参照してください)。