Tải bản đầy đủ (.pdf) (5 trang)

AutoIT Help part 13 doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (180.2 KB, 5 trang )

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

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×