1

私は 3ds MAX 2013 用のプラグインを作成しています。私のプラグインでは、ユーザーが「メッシュ/カメラ/ライト」の「オブジェクト プロパティ」ウィンドウに「ユーザー定義」プロパティを追加する必要があります。値を入力した後、データのいくつかの条件を検証する必要があります。エラーがある場合は、メッセージ ボックスを表示して、[オブジェクト プロパティ] ウィンドウを閉じるのをキャンセルする必要があります。

NOTIFY_PRE_NODE_USER_PROP_CHANGED と NOTIFY_POST_NODE_USER_PROP_CHANGEDを使用して、条件を検証し、エラー メッセージを表示することができました。エラーメッセージが表示された後、ウィンドウを閉じるのを止めるにはどうすればよいですか?

3ds MAX 2013 の maxsdk では、TabDialogMessages enum で、必要なことを実行しているように見えるフラグ「TABDLG_PRECOMMIT」を見つけました。しかし、「オブジェクトのプロパティ」ウィンドウでこのフラグを使用するにはどうすればよいですか。これを使用できる場合、[オブジェクト プロパティ] ウィンドウの [ユーザー定義] タブで編集ボックスのハンドルを取得する方法を教えてください。

4

1 に答える 1

0

残念ながら、これは不可能だと思います。あなたがやろうとしていることの主な問題は、プロパティ ダイアログが表示された後に実際に IP を取得することです。ダイアログが投稿される前にダイアログに影響を与える方法(AFAIK)はなく、後で命令ポインターを取得する方法もありません。それがわかれば、DlgProc をサブクラス化し、OkToCommit 呼び出しをインターセプトして検証を行うことができます。

代わりにできることは、プロパティを検証することであり、それらが適切でない場合は、' actionMan.executeAction 0 "40022" -- Edit: Properties ' を使用してダイアログをすぐに再投稿します。ダイアログが消え、すぐに再表示されます。完璧ではありませんが、それは何かです。

于 2013-09-17T20:34:35.030 に答える