Windows 構造体は、Windows OS のユーザ インタフェース要素にアクセスするためのメソッドを提供します。
これらのメソッドは、3ds Max 2008 以降で使用可能です。
従来、Avguard 拡張機能として提供されていた機能です。
windows.getChildrenHWND {<int_HWND>|#max} parent:{<int_HWND>| #max}
このメソッドは、指定された HWND の再帰的な子ウィンドウの配列を返します。
指定された HWND が 0 である場合は、 (再帰的にではなく) 最上位のデスクトップ ウィンドウのみを返します。
親 HWND が指定されている場合は、直接の親が指定されたウィンドウであるウィンドウのみを返します。
HWND として
#max
が指定されている場合は、3ds Max メイン ウィンドウに関連付けられている HWND が使用されます。
指定された HWND が存在しない場合は、
undefined
値が返されます。
それ以外の場合は、配列が返されます。
配列内の各要素はウィンドウに対応し、5 個の要素の配列が含まれます。これらの配列の各要素は、ウィンドウに関する次の情報を表します。
1: HWND
2: 親の HWND
3: 先祖 HWND
4: クラス名 (文字列として)
5: ウィンドウテキスト (文字列として)
例: 次の呼び出しの結果の一部
|
print (windows.getChildrenHWND #max)
|
次のようになります。
|
...
#(330752P, 592998P, 592998P, "#32770", "Main Toolbar")
#(135510P, 330752P, 330752P, "CustToolbar", "")
#(69978P, 135510P, 135510P, "CustButton", "")
#(69980P, 135510P, 135510P, "CustButton", "")
#(69982P, 135510P, 135510P, "CustSeparator", "")
#(69984P, 135510P, 135510P, "CustButton", "")
#(69986P, 135510P, 135510P, "CustButton", "")
#(69988P, 135510P, 135510P, "CustButton", "")
#(69990P, 135510P, 135510P, "CustSeparator", "")
#(69992P, 135510P, 135510P, "ComboBox", "All")
...
|
この場合、3ds Max のメイン ツールバーは HWND が 330752 であるドッキングされたウィンドウであり、3ds Max メイン ウィンドウの HWND は 592998 であり、メイン ツールバーのクラス名は「#32770」であり、ツールバーのウィンドウ テキストは「Main Toolbar」であることが分かります。
ツールバー ウィンドウの次の要素はツールバー自体であり、HWND は 135510、親は HWND が 330752 であるメイン ツールバー ウィンドウです。ツールバーのクラスは「CustToolbar」であり、テキストは表示されていません。
次の要素は、ツールバーの最初のアイコンである[元に戻す]ボタンです。このボタンの HWND は 69978 で、親は HWND が 135510 であるカスタム ツールバーです。クラスは「CustButton」で、テキストは関連付けられていません。
次の要素は HWND が 69980 であるメイン ツールバーの[やり直し]ボタン、続いてセパレータ、[リンク]アイコン、[選択をリンク解除]アイコン、[スペースワープにバインド]アイコン、もう一度セパレータ、そして最後は[選択フィルタ]で、HWND
は 69992、クラス名は「ComboBox」、既定値で[すべて]と表示されるようになっています。
|
windows.getChildHWND {<int_HWND>| #max} <string> parent:{<int_HWND>|#max}
このメソッドは、指定された HWND を親とし、特定のウィンドウ テキストを持った子ウィンドウを返します。子ウィンドウは再帰的に検索されます。
指定された HWND が 0 である場合は、(再帰的にではなく) 最上位のデスクトップ ウィンドウのみを返します。
親 HWND が指定されている場合は、直接の親が指定されたウィンドウであるウィンドウのみを検索します。
HWND として
#max
が指定されている場合は、3ds Max メイン ウィンドウに関連付けられている HWND が使用されます。
指定された HWND が存在しない場合は、
undefined
値が返されます。
指定されたテキストを持った子ウィンドウが見つからない場合は、
undefined
が返されます。
テキストの検索では、大文字と小文字は区別されます。
マッチするものが見つかると 5 要素の配列が返されます。この配列の各要素は、次のウィンドウ プロパティにそれぞれ対応します。
1: HWND
2: 親の HWND
3: 先祖 HWND
4: クラス名 (文字列として)
5: ウィンドウテキスト (文字列として)
例: 次の呼び出しの結果の一部
|
max file xref object -- [外部参照オブジェクト]ダイアログ ボックスを開きます
xro_hwnd = windows.getChildHWND 0 "XRef Objects" parent:#max -- [外部参照オブジェクト]ダイアログ ボックスを検索します
if xro_hwnd != undefined do windows.sendMessage xro_hwnd[1] 0x0010 0 0 -- 見つかった場合は、終了メッセージを送信します
max file xref scene -- [外部参照シーン]ダイアログ ボックスを開きます
xrs_hwnd = windows.getChildHWND 0 "XRef Scenes" parent:#max -- [外部参照シーン]ダイアログ ボックスを検索します
if xrs_hwnd != undefineddowindows.sendMessage xrs_hwnd[1] 0x0010 0 0 -- 見つかった場合は、終了メッセージを送信します
|
リスナー出力:
|
OK
#(1117532P, 65556P, 592998P, "#32770", "XRef Objects")
1
OK
#(1183068P, 65556P, 592998P, "#32770", "XRef Scenes")
1
|
このメソッドは、3ds Max メイン ウィンドウの HWND を整数で返します。
このメソッドは、MS Windows デスクトップの HWND を整数で返します。