maxHandlePointer = (Windows.GetMAXHWND())maxHwnd = dotNetObject "MaxCustomControls.Win32HandleWrapper" syspointer
このdotNetオブジェクト、MAXscriptのヘルプやチュートリアルを眺めてると
フォーム生成の最後あたりでよく見かけます。
最初はなんぞやーと思ってたのですが、どうやら、
「MAXを最小化した時に一緒にフォームも最小化される」だとかのコントロールをMAX側に委ねるdotNetオブジェクトのようです。
さて、ここでヘルプ通りにdotNetオブジェクトを設定すると、
MAX2013 まではエラーなく動いてくれるのですが、2014、2015だとエラーが出てしまいます。
ヘルプ通りなのに!(※2016は未検証)
これはどういうことかというと、
2014、2015では、 「Windows.GetMAXHWND()」から"MaxCustomControls.Win32HandleWrapper"
が削除されてしまったにもかかわらず、ヘルプは昔のまま・・・・
というのが原因らしいです。
というわけで代替コード。
sysPointer = DotNetObject "System.IntPtr" maxHandlePointer
mainwin = dotNetObject "System.Windows.Forms.Control"
mainwin.fromHandle sysPointer
--フォームを生成--
maxForm = dotNetObject "MaxCustomControls.MaxForm"
maxForm.Show(mainwin)
代替コードは何通りかあると思いますが、AREAで紹介されていたコードを紹介しました。
MAXscrpitでdotNetを扱おうとすると、経験上、標準ヘルプはほとんど役に立ってません。
元ネタ:http://forums.autodesk.com/t5/programming/is-win32handlewrapper-not-in-maxcustomcontrols-anymore/td-p/5115984