Что нового

[Элементы GUI] Как окно GUI поместить на задний план при его появлении?

kasper_sky

Antivirus
Сообщения
116
Репутация
1
Доброго времени суток.

Требуется вот что:
При создании окна ГУИ нужно сразу же его поместить на задний план(не скрыть, нет), т.е. "чтобы не отвлекал", а просто появился в фоне.

Подскажите - каким флагом или командой можно сделать данный трюк.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Re: [Элементы GUI] Как окно ГУИ поместить на задний план при его появлении?

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

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 711
Re: [Элементы GUI] Как окно ГУИ поместить на задний план при его появлении?

Код:
#Include <Constants.au3>
#Include <WinAPI.au3>

$hForm = GUICreate('MyGUI', 400, 400, 200, 200)
_WinAPI_SetWindowPos($hForm, $HWND_BOTTOM, 0, 0, 0, 0, BitOR($SWP_NOACTIVATE, $SWP_NOMOVE, $SWP_NOSIZE))
GUISetState(@SW_SHOWNOACTIVATE)

Do
Until GUIGetMsg() = -3


И исправь пожалуйста ГУИ на GUI в названии темы.
 

VladUs

Скриптер
Сообщения
621
Репутация
180
Я бы еще добавил прозрачности, если окно не активно.

Код:
#Include <Constants.au3>
#Include <WinAPI.au3>

$hForm = GUICreate('MyGUI', 400, 400, 200, 200)
_WinAPI_SetWindowPos($hForm, $HWND_BOTTOM, 0, 0, 0, 0, BitOR($SWP_NOACTIVATE, $SWP_NOMOVE, $SWP_NOSIZE))
WinSetTrans ( $hForm, "", 150 )
GUISetState(@SW_SHOWNOACTIVATE)

Do
	if WinActive ( $hForm  ) then 
		WinSetTrans ( $hForm, "", 250 )
	Else
		WinSetTrans ( $hForm, "", 150 )
	EndIf
	
Until GUIGetMsg() = -3
 
Автор
K

kasper_sky

Antivirus
Сообщения
116
Репутация
1
Re: [Элементы GUI] Как окно ГУИ поместить на задний план при его появлении?

Kaster сказал(а):
kasper_sky
не припомню чтобы для этого был флаг. можешь активировать любое другое окно, и оно станет поверх созданного.
Дело в том, что мне не известно, какое окно нужно будет активизировать, т.е. я заранее не знаю, когда и сколько будет других окон.
А если каждый раз сначала определять, какое окно активно, затем создавать GUI, затем снова активизировать предыдущее - это много мороки.
 
Автор
K

kasper_sky

Antivirus
Сообщения
116
Репутация
1
Моя благодарность всем за помощь. :IL_AutoIt_1:
 

VladUs

Скриптер
Сообщения
621
Репутация
180
kasper_sky [?]
Дело в том, что мне не известно, какое окно нужно будет активизировать, т.е. я заранее не знаю, когда и сколько будет других окон.
Просто активируй рабочий стол. Рабочий стол это тоже окно со своими специфическими
атрибутами

Код:
WinActivate  ( "[CLASS:Progman]")
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 711
Для того, чтобы поместить окно на задний или передний план, или даже вставить его после определенного окна, предназначена функция SetWindowPos(), вот ее и нужно использовать.
 
Верх