ActiveX - 3ds Max キーボード アクセラレータを無効にする
注:
ActiveX コントロールは、DotNet フレームワークとそのコントロールを考慮して、最新バージョンの Microsoft Windows オペレーティング システムで非推奨となりました。
MAXScript では引き続き ActiveX コントロールがサポートされますが、これらは MAXScript にアクセス可能なシステムにインストールおよび登録する必要があります。
ActiveX コントロールの代わりに、MAXScript では、3ds Max 9 以降において DotNet コントロールがサポートされます。
ほとんどの ActiveX コントロールで、3ds Max のキーボード アクセラレータを無効にするキーボード入力がサポートされているかどうかを自動的に識別する方法がありません。
ActiveX コントロールがフォーカスを取得するときに、MAXScript のシステム グローバル変数「enableAccelerators」を false に設定すれば、ユーザーがコントロールに入力できるようになります。
以下のサンプルでは、キーボード アクセラレータの有効と無効を切り替えています。
例:
|
rollout rAccelState "State"
(
checkButton accelState "Test"
on rAccelState open do
(
accelState.text = if (enableAccelerators) then "Enabled" else "Disabled"
accelState.checked = enableAccelerators
)
on accelState changed state do
(
enableAccelerators = state
accelState.text =if (enableAccelerators) then "Enabled" else "Disabled"
)
)
nf = newRolloutFloater "" 100 100
addRollout rAccelState nf
|
注:
ActiveX コントロールがフォーカスを取得するときとフォーカスを失うときを識別し、Max のアクセラレータの使用可能と使用不可能を自動的に切り替えることは実際にはできません。うまく使用不可能にできるかどうかは、スクリプト作成者の裁量次第です。アクセラレータを使用不可能にするには、"on
StatusTextChange ..." イベント ハンドラがありますが、確実ではありません。
on ax StatusTextChange txt do enableAccelerators = false