Как создать оверлей HUD в полноэкранном режиме? - PullRequest
3 голосов
/ 17 мая 2011

Можно ли добавить наложение HUD для приложения Какао, которое работает в полноэкранном режиме?
Я переключаюсь в полноэкранный режим следующим образом.

// An NSView.
[self enterFullScreenMode:m_screen withOptions:nil];

Наложение HUD относится к типу NSPanel и относится к представлению выше. Чтобы отобразить панель HUD, я запускаю следующие строки кода.

[m_hudPanel setFloatingPanel:YES];
[m_hudPanel orderFront:self];
[m_hudPanel orderWindow:NSWindowAbove relativeTo:[[self window] windowNumber]];
[m_hudPanel makeKeyAndOrderFront:self];
[m_hudPanel makeFirstResponder:self];

Хотя панель не появляется, пока я не выйду из полноэкранного режима.

1 Ответ

2 голосов
/ 18 мая 2011

Вы должны увеличить уровень окна.Я не знаю о -enterFullScreenMode:withOptions - но с полноэкранным API CoreGraphics мы сделали это следующим образом:

int level = CGShieldingWindowLevel();
[m_hudPanel setLevel:level];

Или, может быть, вам пришлось использовать level + 1, я забыл.Дело в том, что окна организованы сначала по уровням, а затем внутри каждого уровня.Когда вы перемещаете окно вперед, оно перемещается только к передней части своего уровня.Таким образом фон, строка меню, док-станция и хранитель экрана остаются там, где они должны (это просто особые виды окон).

...