Что нового

Как предоствратить сворачивание полноэкранного приложения при создании GUI

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
У меня есть приложение работающее в режиме Fullscreen. Когда я создаю новое GUI или вывожу MsgBox, оно сворачивается. Как создать GUI которое будет отображаться поверх этого приложения но не вызывать его свертывание в панель управления при создании?
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
218
Belfigor сказал(а):
У меня есть приложение работающее в режиме Fullscreen. Когда я создаю новое GUI или вывожу MsgBox, оно сворачивается. Как создать GUI которое будет отображаться поверх этого приложения но не вызывать его свертывание в панель управления при создании?
А запустить приложение в оконном режиме и растянуть на весь экран не покатит?

Зы
Никогда не видел решения поставленного вопроса.
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
К несчастью запуск и растягивание не покатят :(
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 473
Репутация
2 403
Если я правильно понял проблему, то ключ к решению заключается в том, чтобы создание / отображение, и последующее удаление / скрытие происходило в одинаковом и определённом порядке, я тоже долгое время не мог понять причину “эффекта сворачивания”, но как то случайно мне удалось выявить закономерность:

Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$ParentWin = GUICreate("Parent GUI", 250, 250, -1, -1, BitOr($WS_POPUP, $WS_MAXIMIZE))
$Button = GUICtrlCreateButton("Child", 20, 50)

GUISetState()

$ChildWin = GUICreate("Child GUI", 200, 200, -1, -1, -1, -1, $ParentWin)

While 1
	$aMsg = GUIGetMsg(1)
	
	Select
		Case $aMsg[0] = $GUI_EVENT_CLOSE
			If $aMsg[1] = $ParentWin Then Exit
			
			If $aMsg[1] = $ChildWin Then
				GUISetState(@SW_ENABLE, $ParentWin)
				GUISetState(@SW_HIDE, $ChildWin)
			EndIf
		Case $aMsg[0] = $Button
			GUISetState(@SW_DISABLE, $ParentWin)
			GUISetState(@SW_SHOW, $ChildWin)
	EndSelect
WEnd
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 713
Belfigor сказал(а):
У меня есть приложение работающее в режиме Fullscreen. Когда я создаю новое GUI или вывожу MsgBox, оно сворачивается. Как создать GUI которое будет отображаться поверх этого приложения но не вызывать его свертывание в панель управления при создании?
Так это DirectX-приложение?
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Проблема в том что то окно которое сворачивает - не имеет никакого отношения к автоиту.

Да, это DirectX приложение.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 473
Репутация
2 403
Belfigor [?]
окно которое сворачивает - не имеет никакого отношения к автоиту
Об этом нужно было сразу писать!

это DirectX приложение
Тогда вроде никак, любое дополнительно запущенное приложение активирует панель задач, и тогда полноэкранное окно вынуждено сворачиваться.
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Я придумал решение. Что если необходимое GUI будет создаваться заранее и далее просто делаться видимым и невидимым в нужные моменты и получать статус AllwaysOnTop? Позже попробую, сегодня уже спать пора :smile:
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
218
OffTopic:
Спорю на пункт репутации, что не сработает :whistle:
 

SyDr

Сидра
Сообщения
651
Репутация
158
Belfigor
Поставь заодно разрешение и глубину цвета такие же, как и в игре.
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Пока не пробовал, у меня сейчас выходные, но исходя из того что я вижу например прибавляя или убавляя звук на нетбуке или выполняя другие телодвижения такие как включение/выключение вайфая и прочая встроенная лабуда (появляется статус бар поверх Fullscreen окна, не сворачивая его), я прихожу к выводу что такое - возможно.
 

kzru_hunter

Осваивающий
Сообщения
144
Репутация
49
Тоже интересует это вопрос. Если окно вывести нормально не получается, то может графику (какой-нибудь текст) можно, но так чтобы он не мигал (не исчезал), когда происходят какие либо изменения в окне DirectX приложения?
 
Верх