我正在为Mac OS编写一个小型Cocoa应用程序,我的目标是显示一个窗口,然后读取屏幕上的像素。我已经知道如何做后一部分了,但是在进行之前出现窗口时遇到了麻烦。从我所看到的,像NSWindow的makeKeyAndOrderFront触发的窗口更新被推迟。
我还是比较新的Cocoa,但我基本上想做这样的事情:
[myWindow makeKeyAndOrderFront:self];
// application blocks right here until the window is actually shown
...
那么如何进行阻塞操作呢?
答案 0 :(得分:1)
也许您可以从窗口而不是屏幕获取像素?在Mac OS X上,(几乎)每个窗口都有自己的缓冲区(后备存储),无论它是否可见。即使系统对话框遮挡了放置窗口的屏幕区域,这也可以确保您的测试正常工作。
答案 1 :(得分:0)
尝试在窗口上调用[NSWindow display],这将强制它立即显示。
答案 2 :(得分:0)
只需将对象委托为窗口NSWindowDelegate
,并在委托中调用windowDidBecomeKey:
后截取屏幕截图。