同步调用NSWindow makeKeyAndOrderFront

时间:2011-07-25 22:00:02

标签: cocoa macos nswindow nsrunloop

我正在为Mac OS编写一个小型Cocoa应用程序,我的目标是显示一个窗口,然后读取屏幕上的像素。我已经知道如何做后一部分了,但是在进行之前出现窗口时遇到了麻烦。从我所看到的,像NSWindow的makeKeyAndOrderFront触发的窗口更新被推迟。

我还是比较新的Cocoa,但我基本上想做这样的事情:

[myWindow makeKeyAndOrderFront:self];
// application blocks right here until the window is actually shown
...

那么如何进行阻塞操作呢?

3 个答案:

答案 0 :(得分:1)

也许您可以从窗口而不是屏幕获取像素?在Mac OS X上,(几乎)每个窗口都有自己的缓冲区(后备存储),无论它是否可见。即使系统对话框遮挡了放置窗口的屏幕区域,这也可以确保您的测试正常工作。

答案 1 :(得分:0)

尝试在窗口上调用[NSWindow display],这将强制它立即显示。

答案 2 :(得分:0)

只需将对象委托为窗口NSWindowDelegate,并在委托中调用windowDidBecomeKey:后截取屏幕截图。