Как программно переместить дочерние окна на внешние мониторы на Mac OSX - PullRequest
2 голосов
/ 14 октября 2011

Мне нужно иметь возможность принудительно открывать дочернее окно на определенном внешнем дисплее. Пример: главное окно находится на мониторе 0, при создании дочернего окна оно открывается на мониторе 1 или 2.

Я могу получить количество дисплеев и их CGDirectDisplayID, например:

NSRect frame;
NSScreen *screen;
CGDirectDisplayID displays[4];
CGDisplayCount displayCount;
screen = [window frame]
frame = [screen frame];

err = CGGetDisplaysWithRect((CGRect){NSMinX(frame), NSMinY(frame), NSWidth(frame), NSHeight(frame)}, 4, displays, &displayCount);

но я не могу открыть окно там, пока я не перетащу его вручную после того, как оно было создано.

Есть идеи? Я видел приложения, которые делают это, но не могут найти примеры кода или документацию.

1 Ответ

0 голосов
/ 14 октября 2011

Вы можете установить начальную точку дочернего окна.Этот код не проверен, но должен работать:

NSArray *screens = [NSScreen screens];
NSPoint newFrameOriginPoint;
if ([screens count]>1){
    NSRect secondScreenRect = [[screens objectAtIndex:1] visibleRect];
    newFrameOriginPoint = NSMakePoint(NSMinX(secondScreenRect), NSMinY(secondScreenRect));
    [childWindow setFrameOrigin:newFrameOriginPoint];
}
[childWindow makeKeyAndOrderFront:nil];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...