Синхронный вызов NSWindow makeKeyAndOrderFront - PullRequest
0 голосов
/ 26 июля 2011

Я пишу небольшое приложение Cocoa для Mac OS, и моя цель - показать окно, а затем прочитать пиксели на экране. Я уже знаю, как выполнить последнюю часть, но у меня проблемы с отображением окна перед продолжением. Из того, что я видел, обновления окна, такие как запускаемые NSWindow makeKeyAndOrderFront, откладываются.

Я все еще относительно новичок в Какао, но я в основном хочу сделать что-то вроде этого:

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

Итак, как мне сделать эту операцию блокировки?

Ответы [ 3 ]

1 голос
/ 26 июля 2011

Возможно, вы могли бы получить пиксели из окна, а не с экрана?В Mac OS X (почти) каждое окно имеет свой собственный буфер (резервное хранилище), независимо от того, является ли оно видимым.Это также обеспечит работу вашего теста, даже если есть системное диалоговое окно, скрывающее область экрана, в которой находится окно.

0 голосов
/ 26 июля 2011

Просто делегируйте объект как NSWindowDelegate окна и сделайте снимок экрана один раз, когда в делегате вызывается windowDidBecomeKey:.

0 голосов
/ 26 июля 2011

Попробуйте позвонить - [NSWindow display] в вашем окне, которое заставит его отображаться немедленно.

...