2015-02-07 2 views
1

Я хотел бы показать NSWindow, созданный в полноэкранном режиме, на дополнительном мониторе. В приведенном ниже коде отображается окно, отображаемое на основном экране/главном экране. Происхождение Y в норме, но происхождение X равно 0, где должно быть -1680. Код ниже работал до Йосемити.Показать NSWindow на вторичном экране

NSScreen *screen = [[NSScreen screens] objectAtIndex:2]; 
NSRect mainDisplayRect = [screen frame]; 
[PresenterWindow setFrame: mainDisplayRect display:YES animate:YES]; 
[PresenterWindow makeKeyAndOrderFront:sender]; 
[PresenterWindow setLevel: CGShieldingWindowLevel()]; 

Я также попытался следующие с тем же результатом:

[[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, [screen frame].size.width, [screen frame].size.height) 
          styleMask:NSBorderlessWindowMask 
           backing:NSBackingStoreBuffered 
           defer:NO 
           screen:screen]; 

Пожалуйста, посоветуйте, как я могу это исправить.

Я пробовал решения от некоторых других вопросов:

У меня есть некоторые новые наблюдения:

Если я активировать «Запуск при старте» в раскадровке для моего NSWindow окно рассматривается в полноэкранном режиме на моем вторичном мониторе. Если я затем сделаю orderOut и запустив вышеуказанный код, окно будет отображаться в правильном размере, но на моем основном/главном экране. Окно не активируется для «Отпустить при закрытии». Поэтому, когда я деактивирую «Запуск при запуске», окно снова просматривается на основном/главном экране с размером дополнительного экрана.

+0

Попробуйте установить уровень окна, прежде чем заказать его в случае, если это не сработает, попробуйте перекрывая '-constrainFrameRect:. toScreen:' просто вернуть passed- в прямой. –

+0

Спасибо, Кен, но я не помог. Я узнал, что это сработало, если я активировал «Visible At Launch» для своего NSWindow в раскадровке. Если я тогда программировал, заказывал окно, тогда в следующий раз запускается первоначальный скрипт, это было неправильно. – MaxKlinge

ответ

0

Через несколько дней я получил его на работу:

NSWindow в раскадровке был отмечен «Запуск при запуске»

В applcationDidFinishLaunching я написал следующее:

[PresenterWindow setLevel: NSNormalWindowLevel]; 
[PresenterWindow orderOut:self]; 

Для открытый полный экран Я использовал это:

NSScreen *screen = [[NSScreen screens] objectAtIndex:1]; 
NSRect mainDisplayRect = [screen frame]; 
[PresenterWindow setFrame: mainDisplayRect display:YES animate:YES]; 
[PresenterWindow setLevel: CGShieldingWindowLevel()]; 
[PresenterWindow makeKeyAndOrderFront:screen]; 

Закрыть полный scre еп и быть в состоянии открыть полный экран снова правильно:

[PresenterWindow setLevel: NSNormalWindowLevel]; 
[PresenterWindow orderOut:(sender)]; 
Смежные вопросы