MATLAB Answers

msgbox 関数でモーダルモード(modal) に指定しても、"OK" ボタンをクリックする​前にプログラム中の次​の処理が進んでしまう​のはなぜですか?

7 views (last 30 days)
MATLAB プログラム中に以下のような処理を記述しています。
plot(1:1)
msgbox('コンター図の表示', 'modal')
contourf(peaks)
 
msgbox 関数によりメッセージボックスは表示されますが、OK ボタンを選択する前に、次の処理(ここでは contourf 関数)が実行されてしまいます。

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 22 Jun 2021
モーダルは「実行をブロックする」と同じものではありません。モーダル ダイアログ ボックスを使用すると、ユーザーが応答する前に他のウィンドウと対話できなくなりますが、MATLAB 関数の残りのコードの実行は妨げられません。
MSGBOXは情報を含むウィンドウを設置することを目的としており、「OK」ボタンは、人がその情報を見たということを意味します。ただし、ユーザー入力まで、ダイアログ ボックスは MATLAB 関数の実行を中断しません。
OK ボタンを押下するまで、後段の処理を待機させるには、QUESTDLG のような別の種類のダイアログ ボックスを使用するか、以下のように WAITFOR コマンドを MSGBOX と組み合わせて使用します。
例:
waitfor(msgbox('Wait for me.'));
disp('Done waiting.');

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!