1. Trang chủ
  2. » Công Nghệ Thông Tin

GIỚI THIỆU VỀ AUTOIT-Lập Trình Trên AutoIT part 31 pps

6 216 4

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 122,09 KB

Nội dung

trong hàm được gọi ta có thể sử dụng các macro khác nhau do AutoIt cung cấp để hỗ trợ việc xử lý các sự kiện Macro Chi ti ết @GUI_CTRLID ID c ủa control đang gửi thông điệp ho ặc ID c ủa sự kiện hệ thống @GUI_WINHANDLE Handle c ủa GUI đ ã g ửi đi thông đi ệp @GUI_CTRLHANDLE Handle c ủa control đ ã g ửi đi thông điệp (nếu có thể d ùng được) Chú ý : Bạn có thể sử dụng một hàm cho nhiều sự kiện , điều bạn cần làm trong trường hợp này là tạo ra các hành động khác nhau dựa trên macro @GUI_CTRLID . Ví dụ , bạn có thể đăng ký tất cả sự kiện hệ thống vào trong một hàm rồi tùy trường hợp mà viết lệnh. Control Event Khi bạn nhấp hoặc thay đổi một control thì một sự kiện được gửi đi . Sự kiện đó được gửi vào trong một hàm đã định nghĩa và đã được thiết lập trong GUICtrlSetOnEvent. Bên trong hàm này thì macro @GUI_CTRLID mang giá trị là controlID được trả về khi tạo bằng hàm GUICtrlCreate System Event Các sự kiện hệ thống – ví dụ như close một gui – thì cũng được gởi đi theo cách tương tự như Control Event . Tuy nhiên sự kiện lại được gửi vào hàm được thiết lập trong GUISetOnEvent. Sự kiện hệ thống có thể mang những giá trị sau : $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 Ví dụ Chúng ta sẽ bắt đầu với chương trình hello world đơn giản sau : #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) Sử dụng chế độ OnEvent , chúng ta sẽ viết lại để hoàn tất đoạn mã trên : #include <GUIConstantsEx.au3> Opt("GUIOnEventMode", 1) ; Change to OnEvent mode $mainwindow = GUICreate("Hello World", 200, 100) GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") GUICtrlCreateLabel("Hello world! How are you?", 30, 10) $okbutton = GUICtrlCreateButton("OK", 70, 50, 60) GUICtrlSetOnEvent($okbutton, "OKButton") GUISetState(@SW_SHOW) While 1 Sleep(1000) ; Idle around WEnd Func OKButton() ;Note: at this point @GUI_CTRLID would equal $okbutton, ;and @GUI_WINHANDLE would equal $mainwindow MsgBox(0, "GUI Event", "You pressed OK!") EndFunc Func CLOSEClicked() ;Note: at this point @GUI_CTRLID would equal $GUI_EVENT_CLOSE, ;and @GUI_WINHANDLE would equal $mainwindow MsgBox(0, "GUI Event", "You clicked CLOSE! Exiting ") Exit EndFunc Như bạn thấy , nó rất đơn giản. Mặc dù chỉ là ví dụ cơ bản nhưng sẽ là cái nền để bạn tạo ra những cái hay hơn đấy. Thao tác nâng cao và chế độ nhiều cứa sổ Chúng ta cũng đã biết rằng các control ID là duy nhất , cho dù bạn có nhiều cửa sổ và nhiều control thì bạn vẫn có thể xử lý chúng theo định danh mà bạn đã chọn. Tuy nhiên vấn đề là xử lý như thế nào ? Ở đây sẽ trình bày một ví dụ tương tự như ví dụ trên , nhưng có thêm một cửa sổ dummy nữa : #include <GUIConstantsEx.au3> Opt("GUIOnEventMode", 1) ; Change to OnEvent mode $mainwindow = GUICreate("Hello World", 200, 100) GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") GUICtrlCreateLabel("Hello world! How are you?", 30, 10) $okbutton = GUICtrlCreateButton("OK", 70, 50, 60) GUICtrlSetOnEvent($okbutton, "OKButton") $dummywindow = GUICreate("Dummy window for testing ", 200, 100, 500, 200) GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") GUISetState(@SW_SHOW, $dummywindow) GUISwitch($mainwindow) GUISetState(@SW_SHOW) While 1 Sleep(1000) ; Idle around WEnd Func OKButton() ;Note: at this point @GUI_CTRLID would equal $okbutton MsgBox(0, "GUI Event", "You pressed OK!") EndFunc Func CLOSEClicked() ;Note: at this point @GUI_CTRLID would equal $GUI_EVENT_CLOSE, ;@GUI_WINHANDLE will be either $mainwindow or $dummywindow If @GUI_WINHANDLE = $mainwindow Then MsgBox(0, "GUI Event", "You clicked CLOSE in the main window! Exiting ") Exit EndIf EndFunc Đầu tiên , có một sự thay đổi quan trọng là việc xuất hiện của hàm GUISwitch – khi một cửa-sổ-mới (new window) được tạo ra thì nó trở thành cửa sổ mặc định cho các thao tác của GUI trong tương lai (bao gồm việc tạo control). Trong ví dụ này , chúng ta muốn làm việc với của sổ chính "Hello world" , không phải cửa sổ dummy , nên phải switch về cửa sổ chính. Một vài hàm về GUI cho phép bạn sử dụng handle cửa sổ trong tham số để tự động chuyển sang GUI cần chứa control mà không cần phải dùng đến lệnh GUISwitch. Và chúng ta đã có một trường hợp trong đoạn code trên : GUISetState(@SW_SHOW, $dummywindow) Cũng xin nhắc là chúng ta sử dụng hàm OnEvent để điều khiển nút "close" cho cả hai cửa sổ và sau đó sử dụng macro @GUI_WINHANDLE để xét xem cửa sổ nào vừa gởi đi sự kiện. Chúng ta chỉ đóng GUI khi nút close được nhấn và thông điệp đó xuất phát từ cửa sổ chính (không phải dummy) . Nhưng bạn cũng có thể sử gán cho mỗi cửa sổ một hàm khác nhau để xử lý nếu bạn bạn thích. _Main() Func _Main() HotKeySet("{ESC}", "_Quit") ; press ESC to exit While 1 $pos = MouseGetPos() ToolTip("Mouse : " & $pos[0] & ", " &$pos[1] ) Sleep(10) WEnd EndFunc ;==>_Main Func _Quit() Exit EndFunc ;==>_Quit #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <EditConstants.au3> #include <Timers.au3> Global $string , $def_str, $temp_str , $i , $len , $run , $nDelay , $misc , $timer2type ; run = 1 : playing run=2 : paused run=0 : stoped ; i : dem so ky tu can lay $str1 = "when i saw you at the party , when you asked me girlfriend , i didn't know why i can't say clearly . You 're as pretty as angel , your eyes seemed to burn my heart. My strange lover " & @CRLF $str2 = "When i smelt a perfume from your hair , when i kissed your body , the waves of love were flowing in my and your soul . You said , don't leave me baby " & @CRLF $str3 = "When i heard words you told , when i believed your heart , and now i knew i was a fool . I didn't cry but my soul was dying , my heart broke when you said ''Good bye''" & @CRLF $str4 = "When i looked the waves of ocean , when i missed my memories , i felt all thing were only a deam . A full house which would never exist in this world. The sun was setting " & @CRLF $str5 = "When i told my children stories , when i took my wife's hands , i knew the happy life was right here . '' Every thing is never perfect , i have to accept . '' " & @CRLF $str6 = "When i see the winter of my life , when i write these lines , all left ever and ever, all will never return . Outside the window , sights are a white by snow , the wind 's still blowing , it's still cold, very cold. " $str7 = "Maybe this's final winter i can look , think and count leaves " $def_str = $str1 & $str2 & $str3 & $str4 & $str5 & $str6 & $str7 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ $string = $def_str $len = StringLen($string) . của sổ chính "Hello world" , không phải cửa sổ dummy , nên phải switch về cửa sổ chính. Một vài hàm về GUI cho phép bạn sử dụng handle cửa sổ trong tham số để tự động chuyển sang GUI. cho nhiều sự kiện , điều bạn cần làm trong trường hợp này là tạo ra các hành động khác nhau dựa trên macro @GUI_CTRLID . Ví dụ , bạn có thể đăng ký tất cả sự kiện hệ thống vào trong một hàm rồi. GUICtrlSetOnEvent. Bên trong hàm này thì macro @GUI_CTRLID mang giá trị là controlID được trả về khi tạo bằng hàm GUICtrlCreate System Event Các sự kiện hệ thống – ví dụ như close một gui

Ngày đăng: 03/07/2014, 00:21

TỪ KHÓA LIÊN QUAN

w