質問: msgbox 関数でモーダルモード(modal) に指定しても、"ok" ボタンをクリックする前にプログラム中の次の処理が進んでしまうのはなぜですか? matlab プログラム中に以下のような処理を記述しています。 plot(1:1) msgbox('コンター図の表示', 'modal') contourf(peaks) msgbox 関数によりメッセージボックスは表示されますが、ok ボタンを選択する前に、次の処理(ここでは contourf 関数)が実行されてしまいます。
回答: モーダルは「実行をブロックする」と同じものではありません。モーダル ダイアログ ボックスを使用すると、ユーザーが応答する前に他のウィンドウと対話できなくなりますが、matlab 関数の残りのコードの実行は妨げられません。 msgboxは情報を含むウィンドウを設置することを目的としており、「ok」ボタンは、人がその情報を見たということを意味します。ただし、ユーザー入力まで、ダイアログ ボックスは matlab 関数の実行を中断しません。 ok ボタンを押下するまで、後段の処理を待機させるには、questdlg のような別の種類のダイアログ ボックスを使用するか、以下のように waitfor コマンドを msgbox と組み合わせて使用します。 例: waitfor(msgbox('wait for me.')); disp('done waiting.');