TOPMOST окно в полноэкранном режиме - PullRequest
0 голосов
/ 20 декабря 2009

Я играю с JFrame на Java. Я хочу, чтобы это было самое верхнее окно, т.е. всегда сверху. SetAlwaysOnTop () работает нормально, но как только я запускаю фильм или игровое окно в полноэкранном режиме, он перестает оставаться на вершине.

Я играл с JNI и ручками. Мой код на C для JNI использует SetWindowPos (), и, кажется, он работает нормально, пока я не запустил полноэкранное приложение. Вот образец:

JNIEXPORT void JNICALL Java_Frame1_setWindowAlwaysOnTop
(JNIEnv *env, jclass obj, jint hwnd, jboolean flag)
{
  if (flag)
    SetWindowPos((HWND) hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
  else
    SetWindowPos((HWND) hwnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
  return;
}

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

Может кто-нибудь предложить обходной путь? КСТАТИ. мой C не такой блестящий, так что иди спокойно ..

Спасибо! Дам

Ответы [ 2 ]

1 голос
/ 20 декабря 2009

«Topmost» имеет смысл только в оконной среде.

Полноэкранные игры и фильмы обычно переключают режим в полноэкранный эксклюзивный режим. Это означает, что одно приложение имеет практически полный контроль над видео - оно может изменять разрешение, отображать только одно приложение и т. Д.

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

1 голос
/ 20 декабря 2009

«Как создать окно, которое никогда не закрывается другими окнами, даже другими верхними окнами?»

Представьте, если это возможно, и представьте, если бы две программы сделали это.Программа A создает окно, которое является «самым верхним», как и Программа B. Теперь пользователь перетаскивает два окна так, что они перекрываются.Что просходит?Вы создали себе логическую невозможность.Одно из этих двух окон должно быть над другим, что противоречит мнимой функции «супер-верх»

От: http://blogs.msdn.com/oldnewthing/archive/2005/06/07/426294.aspx:)

...