1

我正在为 3ds MAX 2013 编写插件。在我的插件中,我需要用户在“网格/相机/灯光”的“对象属性”窗口中添加一些“用户定义”属性。输入值后,我需要验证数据中的一些条件,如果有一些错误,我需要显示一个消息框并取消关闭“对象属性”窗口。

使用NOTIFY_PRE_NODE_USER_PROP_CHANGED 和 NOTIFY_POST_NODE_USER_PROP_CHANGED我能够验证条件并显示错误消息。显示错误消息后如何停止关闭窗口?

在 3ds MAX 2013 的 maxsdk 中,在TabDialogMessages枚举中,我找到了一个标志“TABDLG_PRECOMMIT”,它似乎可以满足我的需要。但是我如何将这个标志用于“对象属性”窗口。如果我可以使用它,我将如何在“对象属性”窗口的“用户定义”选项卡中获得编辑框的句柄。

4

1 回答 1

0

不幸的是,我认为这是不可能的。您尝试做的主要问题实际上是在显示属性对话框后获取 IP。在发布之前无法(AFAIK)影响对话框,也无法在之后获取指令指针。如果你能弄清楚,你可以对 DlgProc 进行子类化并拦截 OkToCommit 调用来进行验证。

你可以做的是验证属性,如果它们不合适,立即使用' actionMan.executeAction 0 "40022" -- Edit: Properties '重新发布对话框。用户会看到对话框消失,然后立即重新出现。它并不完美,但它是一些东西。

于 2013-09-17T20:34:35.030 回答