エアアプリケーションがあります。アプリケーションメニュー項目をクリックすると、ネイティブウィンドウが開きます。他のアプリケーションと同様に、ネイティブウィンドウが開いている間は、アプリケーションの他の設定(アプリケーションを閉じるなど)へのアクセスを無効にする必要があります。
これどうやってするの?
1 に答える
私はこれを行う簡単な方法を知りません。私が考えることができる最善の方法は、DEACTIVATEイベントをリッスンし、それを防止してから、手動でウィンドウを再アクティブ化することです。いくつかのコード:
var args:NativeWindowInitOptions = new NativeWindowInitOptions();
var subWindow:NativeWindow = new NativeWindow(args);
subWindow.activate();
subWindow.addEventListener(Event.DEACTIVATE, onDeactivate);
private function onDeactivate(event:Event):void
{
event.preventDefault();
NativeWindow(event.target).activate();
}
これにより、このサブウィンドウが閉じられるまで常にフォーカスが保持されます。
この方法と、このタイプのサブウィンドウの一般的なアプリケーションの動作との間には、2つの違いがあります。
1)親ウィンドウをドラッグできます(何らかの理由で、これはDEACTIVATEイベントをディスパッチしません)
2)通常、サブウィンドウは一種の「ちらつき」があり、警告音を鳴らして、さらにアクションを実行する前に処理する必要があることを示します(これは、少なくともWindows7の他のアプリケーションの動作です。よくわかりません。他のOS)。
ドラッグの問題の場合、サブウィンドウがアクティブなときはいつでも、親ウィンドウでMOVINGイベントをリッスンし、preventDefault()を実行できるはずです。
2の動作を複製する良い方法がわかりませんnotifyUser(NotificationType.INFORMATIONAL)
。DEACTIVATEイベントでサブウィンドウを使用できますが、他のアプリケーションと同じではありません。