chế độ MessageLoop nghĩa là ta tạo một vòng lặp vô hạn luôn luôn kiểm tra xem có sự kiện nào sảy ra trên GUI ko bằng hàm GUIGetMsg() . Khi đã có một sự kiện xảy ra thì hàm GUIGetMsg() sẽ trả lại controlID đã sảy ra sự kiện Xem trang này để biết chi tiết hơn và giải thích về MessageLoop Mode . Chế độ OnEvent Trong chế độ OnEvent thay vì liên tục các phiếu GUI để kiểm tra ta sẽ gán cho mỗi control 1 chương trình con, nếu một sự kiện nào đó sảy ra thì chương trình con tương ứng với control đó sẽ đc thực hiện Xem trang này để biết chi tiết hơn và giải thích về OnEvent Mode . GUI Tham khảo - MessageLoop Chế độ chế độ MessageLoop nghĩa là ta tạo một vòng lặp vô hạn luôn luôn kiểm tra xem có sự kiện nào sảy ra trên GUI ko bằng hàm GUIGetMsg() . Khi đã có một sự kiện xảy ra thì hàm GUIGetMsg() sẽ trả lại controlID đã sảy ra sự kiện Trong MessageLoop chế độ, bạn sẽ chỉ nhận được các sự kiện trong khi bạn đang thực hiện và gọi hàm GUIGetMsg() bạn phải đảm bảo rằng bạn gọi nó là nhiều lần thứ hai khác GUI của bạn ko đc "nhạy". Định dạng cơ bản MessageLoop mã MessageLoop chung: While 1 $msg = GUIGetMsg() WEnd Sự kiện GUI Có ba loại sự kiện thư GUIGetMsg sẽ trả lại: Không có sự kiện sự kiện của control trên GUI sự kiện của hệ thống Không có sự kiện Khi không có sự kiện GUIGetMsg trả lại 0 . Trong một thông lệ này là GUI các sự kiện phổ biến nhất . sự kiện của control Khi được nhấp chuột trên control hoặc có các thay đổi trên control thì một sự kiện được gửi đi - sự kiện này là tích cực và GUIGetMsg sẽ đọc đc và trả lại controlID đó tương ứng với controlid đã được tạo ra với GUICtrlCreate . sự kiện của hệ thống sự kiện của hệ thống - ví dụ như đóng GUI - là những số âm. Khác nhau, các sự kiện này sẽ được hiển thị bên dưới và được định nghĩa trong GUIConstantsEx.au3 : $GUI_EVENT_CLOSE $GUI_EVENT_MINIMIZE $GUI_EVENT_RESTORE $GUI_EVENT_MAXIMIZE $GUI_EVENT_PRIMARYDOWN $GUI_EVENT_PRIMARYUP $GUI_EVENT_SECONDARYDOWN $GUI_EVENT_SECONDARYUP $GUI_EVENT_MOUSEMOVE $GUI_EVENT_RESIZED $GUI_EVENT_DROPPED Đóng cửa sổ Thu nhỏ cửa sổ Phục hồi cửa sổ Phóng to cửa sổ Nhấn chuột trái xuống trên cửa sổ Thả chuột trái (sau khi nhấn) Nhấn chuột phải xuống trên cửa sổ Thả chuột phải (sau khi nhấn) Di chuột trên cửa sổ Cửa sổ đc thay đổi kích thước Cửa sổ đang đc di chuyển Ví dụ GUI Trong khi chính GUI Reference page chúng tôi bắt đầu với ví dụ Hello World như thế này: #include <GUIConstantsEx.au3> GUICreate("Hello World", 200, 100) GUICtrlCreateLabel("Hello world! How are you?", 30, 10) GUICtrlCreateButton("OK", 70, 50, 60) GUISetState(@SW_SHOW) Sleep(2000) Bây giờ chúng tôi sẽ kết thúc bằng cách sử dụng một mã MessageLoop và một số các sự kiện bài viết mô tả ở trên. Nó là bình thường vì số lượng có thể có bài viết sử dụng cấu trúc select #include <GUIConstantsEx.au3> GUICreate("Hello World", 200, 100) GUICtrlCreateLabel("Hello world! How are you?", 30, 10) $okbutton = GUICtrlCreateButton("OK", 70, 50, 60) GUISetState(@SW_SHOW) While 1 $msg = GUIGetMsg() Select Case $msg = $okbutton MsgBox(0, "GUI Event", "You pressed OK!") Case $msg = $GUI_EVENT_CLOSE MsgBox(0, "GUI Event", "You clicked CLOSE! Exiting ") ExitLoop EndSelect WEnd Nó là đơn giản. Rõ ràng càng có nhiều cửa sổ và kiểm soát các bạn tạo thêm phức tạp, nhưng nó sẽ cho bạn thấy ở trên các điểm cơ bản. Nhiều GUIGetMsg và nâng cao Windows Kiểm soát ID là duy nhất, ngay cả khi bạn có nhiều cửa sổ, do đó, như đã nêu ở trên mã với công việc kiểm soát và sử dụng tốt với nhiều cửa sổ. Tuy nhiên, khi xử lý các sự kiện như: $GUI_EVENT_CLOSE hoặc $GUI_MOUSEMOVE bạn cần biết GUI cửa sổ mà tạo ra sự kiện. Để làm được điều này, bạn phải gọi GUIGetMsg như vậy: $ msg = GUIGetMsg (1) Khi tham số là 1 thì thay vì trả lại 1 giá trị controlID thì bây giờ GUIGetMsg sẽ trả lại 1 mảng với phần tử thứ nhất là sự kiện và phần tử thứ 2 là Gui đang sảy ra sự kiện, xem vd dưới sẽ hiểu :| #include <GUIConstantsEx.au3> $mainwindow = GUICreate("Hello World", 200, 100) GUICtrlCreateLabel("Hello world! How are you?", 30, 10) $okbutton = GUICtrlCreateButton("OK", 70, 50, 60) $dummywindow = GUICreate("Dummy window for testing ", 200, 100) GUISwitch($mainwindow) GUISetState(@SW_SHOW) While 1 $msg = GUIGetMsg(1) Select Case $msg[0] = $okbutton MsgBox(0, "GUI Event", "You pressed OK!") Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $mainwindow MsgBox(0, "GUI Event", "You clicked CLOSE on the main window! Exiting ") ExitLoop EndSelect WEnd Chế độ OnEvent trên GUI Trong chế độ OnEvent thay vì liên tục các phiếu GUI để kiểm tra ta sẽ gán cho mỗi control 1 chương trình con, nếu một sự kiện nào đó sảy ra thì chương trình con tương ứng với control đó sẽ đc thực hiện chế độ mặc định là chế độ MessageLoop như vậy trước khi sử dụng các chế độ OnEvent bạn cần thiết phải đổi = các sử dụng Opt("GUIOnEventMode", 1). Định dạng cơ bản OnEvent While 1 Sleep(1000) ; Just idle around WEnd Func Event1() ; Code to handle event goes here EndFunc Func Event2() ; Code to handle event goes here EndFunc GUI Events Trong OnEvent chế độ GUI của bạn sẽ tạo ra những "sự kiện": Control Event System Event Cả hai loại sự kiện sẽ gọi tới một chương trình con khi có suỷj kiện sảy ra, để đặt chương trình con nào sẽ đc gọi khi system event sảy ra ta . <GUIConstantsEx.au3> $mainwindow = GUICreate("Hello World", 200, 100) GUICtrlCreateLabel("Hello world! How are you?", 30, 10) $okbutton = GUICtrlCreateButton("OK",. GUICtrlCreateLabel("Hello world! How are you?", 30, 10) $okbutton = GUICtrlCreateButton("OK", 70, 50, 60) GUISetState(@SW_SHOW) While 1 $msg = GUIGetMsg() Select Case. <GUIConstantsEx.au3> GUICreate("Hello World", 200, 100) GUICtrlCreateLabel("Hello world! How are you?", 30, 10) GUICtrlCreateButton("OK", 70, 50, 60) GUISetState(@SW_SHOW)