1

Тема: AHK: GUI - несколько окон и метки GuiClose, GuiEscape, etc.

Например имеем такой код

ImgWin:
Gui, New ,,Windows 7
Gui, Add, Picture, gMyPicture AltSubmit, c:\AHK\Icon\windows7.jpg
Gui, font, s14
Gui, Add, Button,  gOk_Img Default ,Ok
Gui, Add, Button,  gCancel_Img xp+300 ,Cancel
ovTxt := arrayKey[fnRetIndexOfLabel(vLbl),сText]
Gui, Add, Text, CenterHWNDhText xs yp+50, %ovTxt%
Gui, Show
vImgWin := 0 ; Выполнить действие=1 отмена=2
i := 0
vLoop := 30
while (vImgWin = 0)
 {
  Gui Flash
  sleep 300
  if (i=vLoop)
    vImgWin := 1
  i++  
 }
if (vImgWin = 1)
 GuiControl, , %hText%, Выполняется...
if (vImgWin = 2) 
 GuiControl, , %hText%, Отмена действия...
sleep 1000
Gui, Cancel
return

;GuiClose:
GuiEscape: 
vImgWin := 2 ; Отмена
return

MyPicture:
 if A_GuiEvent = Normal
      vImgWin := 1
return

Ok_Img:
 vImgWin := 1
return
 
Cancel_Img: 
 vImgWin := 2 ; Отмена
return

но как для другого окна определить метки типа GuiClose, GuiEscape и им подобные?

Я попытался использовать описание типа

Gui, ImgWin:New ,,Windows 7
Gui, ImgWin:Add, Picture, gMyPicture AltSubmit, c:\AHK\Icon\windows7.jpg
Gui, ImgWin:font, s14
Gui, ImgWin:Add, Button,  gOk_Img Default ,Ok
; и т.д.

Скрипт перестал работать вообще, т.е. окно на рисовалось/появилось, а вот реагировать оно ни на что не хотело.
Что я сделал не так?
Или как правильно надо сделать?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

2 (изменено: Indomito, 2012-04-14 10:16:01)

Re: AHK: GUI - несколько окон и метки GuiClose, GuiEscape, etc.

После часа копания в справке я случайно (раньше не обращал внимания) наткнулся на Множественные окна GUI ну и проставил метки "2" где  было нужно/можно.
Это самое простое решение или можно проще или иначе?

ImgWin:
Gui, 2:New ,-caption +Border +AlwaysOnTop,Windows 7
Gui, 2:Add, Picture, gMyPicture AltSubmit, c:\AHK\Icon\windows7.jpg
Gui, 2:font, s14
Gui, 2:Add, Button,  gOk_Img Default ,Ok
Gui, 2:Add, Button,  gCancel_Img xp+300 ,Cancel
ovTxt := arrayKey[fnRetIndexOfLabel(vLbl),сText]
Gui, 2:Add, Text, Center HWNDhTextImg xs yp+50, %ovTxt%
Gui, 2:Show
vImgWin := 0 ; Выполнить действие=1 отмена=2
i := 0
vLoop := 30
while (vImgWin = 0)
 {
  Gui 2:Flash
  sleep 300
  if (i=vLoop)
    vImgWin := 1
  i++  
 }
if (vImgWin = 1)
 GuiControl, 2:Text, %hTextImg%, Выполняется...
if (vImgWin = 2) 
 GuiControl, 2:Text, %hTextImg%, Отмена действия...
sleep 1000
Gui, 2:Cancel
return

2GuiClose:
2GuiEscape: 
vImgWin := 2 ; Отмена
return

MyPicture:
 if A_GuiEvent = Normal
      vImgWin := 1
return

Ok_Img:
 vImgWin := 1
return
 
Cancel_Img: 
 vImgWin := 2 ; Отмена
return

По сути проблема решена.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro