2

コード内のあちこちで更新する多くのグラフィカル ハンドルを持つ実行中のスクリプトがあります。私の目的は、プログラムを残酷に (X ボタンまたは Ctrl C を使用して) 閉じるときに、正しく閉じることです。

デフォルトのクローズ機能をオーバーライドしましたが、それを押したり、Ctrl+C を押したりすると、「無効なオブジェクト ハンドル」が表示されることがあります。

コードに多くのハンドルがあります。それぞれをチェックする必要がありますか、または図とコードを正しく閉じる別の方法はありますか? (「quit」のようなものですが、matlab IDE を閉じません)。

みんなありがとう。

4

1 に答える 1

2

の有効性を で確認できhandleますisvalid。ハンドルをループして有効性を確認し、有効な場合は閉じる必要があります。try...catch適切な測定のために、そこにもチャックする必要があります。何かのようなもの:

function figure1_DeleteFcn(hObject, eventdata, handles)
    errList = [];
    for nHndl = 1:length(handles.myHandles)
        if isvalid(handles.myHandles(nHndl))
            try
                delete(handles.myHandles(nHndl));
            catch err
                errList = [errList err];
            end
        end
    end

    if length(errList) == 1
        error([mfilename ':ErrorClosingUI'], 'Error closing UI : %s', errList.message);
    elseif length(errList) > 1
        % Should probably do something smarter with the error messages here
        error([mfilename ':ErrorClosingUI'], 'Multiple errors occurred closing UI');
    end
于 2013-03-26T18:57:13.107 に答える