MAXScript のメッセージ ボックスおよび問い合わせダイアログ ボックス

これらの関数を使用すると、MAXScript 内からメッセージ ボックスや「はい/いいえ」の問い合わせダイアログ ボックスを表示できます。

messageBox <message_string> [optional arguments - see below]

メッセージの文字列と[OK]ボタンを含むモーダル メッセージ ボックスを表示します。

queryBox <message_string> [optional arguments - see below]

[はい] (Yes)ボタンと[いいえ] (No)ボタンを含むモーダル メッセージ ボックスを表示します。queryBox() 関数は、[はい] (Yes)ボタンをクリックした場合は true[いいえ] (No)ボタンをクリックした場合は false を返します。

yesNoCancelBox <message_string> [optional arguments - see below]

[はい] (Yes)[いいえ] (No)、および[キャンセル] (Cancel)ボタンを含むモーダル メッセージ ボックスを表示します。yesNoCancelBox() 関数は、ユーザが選択したボタンに応じて #yes#no または #cancel を返します。

cancelTryContinueBox <message_string> [optional arguments - see below]

[キャンセル] (Cancel)[再試行](Try Again)、および[続行] (Continue)ボタンを含むモーダル メッセージ ボックスを表示します。このダイアログは、ユーザが選択したボタンに応じて #cancel#tryAgain、または #continue を返します。 3ds Max 2020.1 Update 以降で使用可能です。

retryIgnoreAbortBox <message_string> [optional arguments - see below]

[再試行] (Retry)[無視] (Ignore)、および[中断] (Abort)ボタンを含むモーダル メッセージ ボックスを表示します。このダイアログは、ユーザが選択したボタンに応じて #retry#ignore、または #abort を返します。 3ds Max 2020.1 Update 以降で使用可能です。

okCancelBox <message_string> [optional arguments - see below]

[OK]および[キャンセル] (Cancel)ボタンを含むモーダル メッセージ ボックスを表示します。このダイアログは、ユーザが選択したボタンに応じて #ok または #cancel を返します。3ds Max 2020.1 Update 以降で使用可能です。

retryCancelBox <message_string> [optional arguments - see below]

[再試行] (Retry)および[キャンセル] (Cancel)ボタンを含むモーダル メッセージ ボックスを表示します。このダイアログは、ユーザが選択したボタンに応じて #retry または #cancel を返します。3ds Max 2020.1 Update 以降で使用可能です。

ダイアログ ボックスの一般的なオプションの引数

すべてのダイアログ ボックス タイプは、次に示す一般的なオプションの引数をサポートします。

 [title:<window_title_string>] [beep:<boolean>] \
   [icon:(#question|#information|#warning|#critical)] [defaultButton:<int>] \
   [dontShowAgain:&<variable>]  [helpID:<int>] [showHoldButton:<boolean>] \
   [parent:<int_ptr>] [extraFlags:<int>]

title:<window_title_string>: ダイアログ ウィンドウのタイトルを指定します。指定しない場合の既定値は「MAXScript」です。

beep:<boolean>: 表示された場合にビープ音を鳴らすかどうか、およびアイコンを表示するかどうかを指定します。既定値は true です。

これらのオプションは、3ds Max 2020.1 Update 以降で使用可能です。

icon:(#question|#information|#warning|#critical): 既定値をオーバーライドするために表示するアイコンを指定します。既定値は、表示されているメッセージ ボックスのタイプによって異なります。アイコンを表示しない場合は、beep を false に設定します。

defaultButton:<int>: 既定のボタン(ユーザが[Enter]キーを押すと押した状態になる選択済みのボタン)のインデックスを指定します既定値は 1 です。

dontShowAgain:&<variable>: [今後このメッセージを表示しない](Don't Show Again)チェックボックスをサポートします。参照によって渡される <variable> は、このチェックボックスがオンの場合に true を返します。

helpID:<int>: 指定した場合は、ダイアログに[ヘルプ] (Help)ボタンを追加します。また、ユーザがボタンをクリックしたときに表示されるヘルプ トピックの ID を指定します。 定義されているヘルプ トピック ID のリストについては、<maxsdk>\include\contextids.h を参照してください。このダイアログでは、[F1]キーを押してこのヘルプ ID を呼び出すことはできない点に注意してください。

showHoldButton:<boolean>: [停止/OK] (Hold/OK)ボタンを表示するかどうかを指定します。ユーザがこのボタンをクリックすると、ダイアログは #hold を返します。

parent:<int_ptr>: このダイアログの親 HWND を指定します。既定では、これが 3ds Max のメイン ウィンドウです。

注: このオプションを指定した場合は、ダイアログが Qt ベース(既定)であるのか、または Win32 ベース(次のフラグを参照)であるのかに応じて、動作が若干異なります。既定では、親ウィンドウとその他のウィンドウを操作できませんWin32 ベースのダイアログでは、親ウィンドウのみが「ロック」され、その他のウィンドウは操作できます。

extraFlags:<int>: 追加機能を提供するために組み合わせることができるフラグを含む大規模なフィールドです。これらのフラグの値の説明については、MSDN MessageBox 機能に関するドキュメントを参照してください。

例:

messageBox "You shouldn't have done that"
if queryBox "Do you want to continue?" beep:false then...

上記のダイアログ ボックス関数呼び出しを含むステートメントの後に発生する MAXScript ステートメントは、場合によって、実行されるべきタイミング以前に実行されることがあります。

たとえば、次のスクリプトを実行した場合を例にとります。

スクリプト:

for _t=0 to 3 do
(
messagebox "Press Me"
format "_t= %\n" _t
)
print "Should print last"

リスナーへの出力は次のとおりです。

_t= 0
"Should print last"
"Should print last"
_t= 1
_t= 2
_t= 3

メッセージ ボックスは、_t の値がリスナーに出力される前に毎回(この例では 4 回)表示されます。

これは、バックグラウンド スレッドでコンパイルおよび実行する式をリスナーが検索するためです。上記の例には、for ループ式と最後の print 式の 2 つがあります。messageBox() 関数は、メイン UI スレッド内で UI イベントの発生と処理を待ち続けます。一方、コンパイラは既にコンパイルを行い、print "Should print last" の実行準備が整っています。

このような誤った順序での実行を防ぐには、スクリプトをカッコで囲む必要があります。こうすると、スクリプトは 2 つの式ではなく 1 つの式だけを含むことになり、正しい順序で実行されるようになります。