Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] GUIGetMsg(1) - вернуть расширенную информацию о событии в виде массива. (http://forum.oszone.net/showthread.php?t=150286)

FlatX007 11-09-2009 22:32 1216887

GUIGetMsg(1) - вернуть расширенную информацию о событии в виде массива.
 
Меня интересует как сделать постоянный цикл...

вот обычный пример : (Если события не происходит то $msg = 0)
Код:

While 1
    $msg = GUIGetMsg()
    Switch
        Case
0
;~          постоянный цикл
    EndSwitch
WEnd

А как тоже самое сделать тут :
Код:

#include <GUIConstantsEx.au3>

Global $GUIWidth = 250, $GUIHeight = 250

$ParentWin = GUICreate("Parent GUI", $GUIWidth, $GUIHeight)
$ParentWin_Pos = WinGetPos($ParentWin, "")
    GUISetState(@SW_SHOW)
$ChildWin = GUICreate("Child GUI", $GUIWidth, $GUIHeight, $ParentWin_Pos[0] + 100, $ParentWin_Pos[1] + 100, -1, -1, $ParentWin)
$Button1 = GUICtrlCreateButton("Button1", 96, 88, 75, 25)
    GUISetState(@SW_SHOW)
GUISwitch($ParentWin)

While 1
    $msg = GUIGetMsg(1)
    Select
        Case
$msg[1] = $ParentWin
                If $msg[0] = $GUI_EVENT_CLOSE Then
                    Exit
                EndIf

        Case
$msg[1] = $ChildWin
                Switch $msg[0]
                    Case 0
                        ConsoleWrite($msg[0] & @crlf) ; Вот тут нужны постояно выполняющиеся действия т.е. вывод в консоль(для примера)

                    Case $Button1
                        MsgBox(64, "Button1", $Button1)
                        Exit
                EndSwitch

        EndSelect
WEnd


Creat0R 11-09-2009 22:54 1216901

Цитата:

Цитата FlatX007
как тоже самое сделать тут »

Что именно нужно сделать, выводить в консоль если нет событии? или только для дочернего окна?
А вообще так не опрашивают события, нужно перевернуть условия в Case:

Код:

#include <GUIConstantsEx.au3>

Global $GUIWidth = 250, $GUIHeight = 250

$ParentWin = GUICreate("Parent GUI", $GUIWidth, $GUIHeight)
$ParentWin_Pos = WinGetPos($ParentWin, "")
GUISetState(@SW_SHOW)

$ChildWin = GUICreate("Child GUI", $GUIWidth, $GUIHeight, $ParentWin_Pos[0] + 100, $ParentWin_Pos[1] + 100, -1, -1, $ParentWin)
$Button1 = GUICtrlCreateButton("Button1", 96, 88, 75, 25)
GUISetState(@SW_SHOW)
GUISwitch($ParentWin)

While 1
    $msg = GUIGetMsg(1)

    Switch $msg[0]
        Case $GUI_EVENT_CLOSE
            If $msg[1] = $ParentWin Then Exit
        Case
$Button1
            MsgBox(64, "Button1", $Button1)
            Exit
        Case Else

            ConsoleWrite($msg[0] & @CRLF) ; Вот тут нужны постояно выполняющиеся действия т.е. вывод в консоль(для примера)
    EndSwitch
WEnd


FlatX007 11-09-2009 23:01 1216903

Да - то ,что нужно ...
А почему Case Else ? я так незнал что можно делать.

Код:

        Case Else
            ConsoleWrite($msg[0] & @CRLF) ; Вот тут нужны постояно выполняющие....


beve 11-09-2009 23:37 1216919

Цитата:

Цитата FlatX007
А почему Case Else ? я так незнал что можно делать. »

Или в твоем примере заменить Case 0 на Case -11. (но это только для примера, ибо ясно что пример Creator-a есть то что надо...) Не то написал, это связано еще и с активностью мышки...

FlatX007 11-09-2009 23:51 1216929

Цитата:

Цитата beve
Case 0 на Case -11 »

Если так сделать то инфа в консоль выдаётся когда я двигаю мышь ... :o, забавно

Creat0R 12-09-2009 00:21 1216948

Цитата:

Цитата FlatX007
инфа в консоль выдаётся когда я двигаю мышь »

-11 это $GUI_EVENT_MOUSEMOVE, но я лично не рекоммендую использовать числа вместо реальных констант, это портит читабельность кода.


Время: 20:45.

Время: 20:45.
© OSzone.net 2001-