1

我有一个空气应用程序。单击应用程序菜单项将打开本机窗口。就像在其他应用程序中一样,我希望在本机窗口打开时,应禁用对应用程序中其他首选项(如关闭应用程序等)的访问。
我怎样才能做到这一点?

4

1 回答 1

2

我不知道有什么简单的方法可以做到这一点。我能想到的最好的方法是监听 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();
}

这将确保此子窗口在关闭之前始终保持焦点。

我可以看到此方法与此类子窗口的典型应用程序行为之间存在两个差异。

1)可以拖动父窗口(由于某种原因,这不会调度 DEACTIVATE 事件)

2)通常子窗口应该有点“闪烁”并播放警报声以表明必须先处理它才能进行进一步操作(至少这是 Windows 7 上其他应用程序的行为;我不确定其他操作系统)。

对于拖动问题,您应该能够让父窗口在子窗口处于活动状态时侦听 MOVING 事件和 preventDefault()。

我没有看到任何复制 2 行为的好方法。您可以notifyUser(NotificationType.INFORMATIONAL)在 DEACTIVATE 事件中拥有子窗口,但这与其他应用程序所做的事情不同。

于 2012-12-28T00:19:34.587 回答