Что нового

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

kasper_sky

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

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

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

kaster

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

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

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
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
Репутация
181
Я бы еще добавил прозрачности, если окно не активно.

Код:
#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
Репутация
181
kasper_sky [?]
Дело в том, что мне не известно, какое окно нужно будет активизировать, т.е. я заранее не знаю, когда и сколько будет других окон.

Просто активируй рабочий стол. Рабочий стол это тоже окно со своими специфическими
атрибутами

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

Yashied

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