1

Тема: AHK:Gui слоями (с перекрытием)

Доброго времени суток. Не могу решить задачу, взываю к вашей помощи. Дело такое: слепил я себе "напоминатор". По факту- многослойное GUI, Оно у меня почти везде AlwaysonTop, но вот беда - когда случайно кликаешь по нему, то при попадании по Background'у он становится активным и перекрывает остальные из-за чего приходится перерисовывать или же активировать в нужной последовательности все окно. Есть ли способ избежать его активации ?  В стилях я такого не нашел. Точнее нашел WS_EX_NOACTIVATE, но толи я запихивать его не научился до конца(я пытался и winset'ом и sendmessage'ом), толи это и вовсе не то, что мне нужно, но корректно он так и не заработал(все равно делал окно поверх всех). Каким-то местом (шерстя докумментацию msdn в тщетных попытках разобраться) я набрел на команду  WM_DISABLEMODAL, но я к моему сожалению, не очень понимаю в Сall-функциях и подобном, да и что-то мне подсказывает, что в конце того пути меня ждет боль и разочарование. В общем были еще пару нерабочих идей. Спасайте. Заранее благодарю.
Ну и просто на всякий случай оставлю здесь крупицу чего-то светлого и нежного - мои Gui (18+):

#Include <GDIp_all>
#SingleInstance, Force
#NoEnv
#Persistent
#Include <GDIpHelper>
SetTitleMatchMode, 2
SetBatchLines, -1
DetectHiddenWindows, on
DetectHiddenText, on

Gui, Stek:New,+AlwaysOnTop -Caption +ToolWindow +LastFound
WinSet, Transcolor, 000999 255,
Gui, Stek:Color, 000999
Gui, Stek:Add, Picture, x30 y338 w260 h-1 Background000999, %A_Desktop%\UASYA\Шляпа(визор).png

Gui, Stek:Show, x1345 y580 w293 h800, Losos1 


Gui, 12:New, +AlwaysOnTop -Caption +ToolWindow +LastFound
WinSet, Transcolor, 000992 255,
Gui, 12:Color, 000992
Gui, 12:Add, Progress, x40 y230 w242 h65 cRed Background000992 vBarr
Gui, 12:Font, s25 Bold, Headliner No. 45
Gui, 12:Add, Text, x0 y120 vTT cred w150
Gui, 12:Show, x1345 y680 w293 h480, Losos12
GuiControl, 12:, Barr, 50


Img = %A_Desktop%\UASYA\7.GIF
Img2 = %A_Desktop%\UASYA\Шляпа.png


Gui, 34:New,+AlwaysOnTop -Caption +ToolWindow +LastFound 
hwnd := WinExist()
WinSet, TransColor, 474747 255,
Gui, 34:Color, 474747
Gui, 34:Add, Picture, x0 y100 w293 h-1 Background474747, %A_Desktop%\UASYA\Шляпа.png
Gui, 34:Show, x1345 y680 w293 h800, Losos34



Gui, 35:New,+AlwaysOnTop -Caption +ToolWindow +LastFound
WinSet, TransColor, 484848 255,
Gui, 35:Color,  484848
Gui, 35:Add, Picture, x1020 y100 w50 h-1 Background484848 vPict, %A_Desktop%\UASYA\tm.png
Gui, 35:Add, Picture, x960 y110 w50 h-1 Background484848 vPict1, %A_Desktop%\UASYA\z.png
Gui, 35:Add, Picture, x1083 y120 w40 h-1 Background484848 vPict2, %A_Desktop%\UASYA\r2.png
Gui, 35:Add, Picture, x1025 y160 w40 h-1 Background484848 vPict3, %A_Desktop%\UASYA\x.png
GuiControl, 35:Hide, pict3
Gui, 35:Add, Progress, x317 y325 w400 h5 c990066 Background484848 vZarr2
Gui, 35:Show, x445 y680 w1300 h400, Losos35

2

Re: AHK:Gui слоями (с перекрытием)

Gui, +owner
Gui, Show, NoActivate

3

Re: AHK:Gui слоями (с перекрытием)

lobster, во-первых, где же сами картинки (и почему они лежат не в одной папке со скриптом)?
Во-вторых, прежде чем качать архив с картинками и кодом, неплохо бы видеть тут скриншот вашего творчества.

Касательно самого вопроса - действовать можно разными способами:
• Можно выстроить окна в цепочку владельцев: последнее дочернее окно будет перекрывать всех своих предков:

Gui Father: +HwndFatherHwnd
Gui Son: +Owner%FatherHwnd% +HwndSonHwnd
Gui GrandSon: +Owner%SonHwnd%

• Применяя стиль по всем окнам стиль WS_DISABLED:


WinSet Style, % "+" (WS_DISABLED := 0x8000000), ahk_id %FatherHwnd%