Vindicator209 Posted April 7, 2007 Share Posted April 7, 2007 Hey, is there a way to simulate a tickertape (marquee) without haveing to move a label pixel by pixel? im sure some one had asked this before but I couldn't find their post... thanks [center]"When you look at old, classic games like Snake, you often put it off because it's such a simple game, but it's only when you actually try and create your own unique game from scratch, do you finally appreciate those games."[/center][center]Don't ask for answers if you haven't TRIED yet![/center][center]Most answers can be answered in the help file! Use it![/center] Link to comment Share on other sites More sharing options...
magician13134 Posted April 7, 2007 Share Posted April 7, 2007 Yeah, I did this in one of my programs. I found the easiest way was to create a Child GUI on top of another GUI so it didn't have to take up the entire GUI... hmm... that didn't sound too helpful... #include <GUIConstants.au3> Opt("GUIOnEventMode", 0) $AboutGUI = GUICreate("About iDFree", 436, 251, -1, -1, $WS_BORDER) WinSetOnTop("About iDFree", "", 1) GUISetBkColor(0xFFFFFF) GUICtrlCreatePic(@TempDir & "\about.gif", 0, 0, 436, 251) GUICtrlSetState(-1, $GUI_DISABLE) $close = GUICtrlCreateButton(" Ok! ", 380, 75, 35, 22) $win = WinGetPos("About iDFree") $child = GUICreate("About scroller", 175, 115, $win[0]+260, $win[1]+125, $WS_POPUP, $WS_EX_TRANSPARENT, $AboutGUI) GUISetBkColor(0xFFFFFF) $AboutLabel = GUICtrlCreateLabel("Coded by Ben Perkins" & @CR & "Magic Soft Inc." & @CR & "Inspired by:" & @CR & "Alex Bagby and Ichaelmay58" & _ @CR & "BG image thanks to Reel Big Fish" & @CR & @CR & "-The Magician", 1, -80, 170, 105, BitOr($SS_NOTIFY, $SS_RIGHT)) GUISetState(@SW_SHOW, $AboutGUI) GUISetState(@SW_SHOW, $child) While 1 For $i = -105 to 130 $msg = GUIGetMsg() ControlMove("About scroller", "", $AboutLabel, 1, 30-$i) If $msg = $close Then Opt("GUIOnEventMode", 1) GUIDelete($AboutGUI) Return EndIf sleep(50) Next WEnd I don't think the bg image is really necessary to this... Hope this helps... Visit Magic Soft Inc. for some of my software Link to comment Share on other sites More sharing options...
Obi-w00t Posted April 7, 2007 Share Posted April 7, 2007 Could you not just set the text in an edit box to simulate a marquee? Use a loop to set the text of the edit box to look as if text is scrolling across, people do a similar thing in Javascript for manipulating the status bar and title of a web page. Link to comment Share on other sites More sharing options...
magician13134 Posted April 7, 2007 Share Posted April 7, 2007 But the edit box always has that outline... if he really wants it to look like a marquee... I dunno... I could try to write a UDF for you... I don't really know how well it'd turn out though... Visit Magic Soft Inc. for some of my software Link to comment Share on other sites More sharing options...
GrungeRocker Posted April 7, 2007 Share Posted April 7, 2007 A Script by peethebee: expandcollapse popup; ================================================ ; V E R S I O N 1 . 9 . 3 ; ================================================ ; ; This is as far as I know the frist AutoIt UDF ; dealing with text animations. I myself believe ; that such an easy but impressing effect can be ; very uesfull. ; I hope you like it. Feel free to post comments ; in the AutoIt forums or email me at ; peter_opali@gmx.de! ; ; peethebee, Germany ; ; ; Special Thanks to: ; - "gafrost" for his solution of the ; WinXPSP2/W2k problem ; ; ; Short summary of all effect functions: ; ; _txt_eff__about_messages ; _txt_eff__airport ; _txt_eff__blink ; _txt_eff__broad ; _txt_eff__color_sequence ; _txt_eff__color_to_color ; _txt_eff__enlarge_from_left ; _txt_eff__enlarge_from_right ; _txt_eff__mix_up_chars ; _txt_eff__move_cap_char_through_text ; _txt_eff__move_in_from_left ; _txt_eff__move_in_from_right ; _txt_eff__move_out_to_left ; _txt_eff__move_out_to_right ; _txt_eff__move_small_char_through_text ; _txt_eff__move_string_through_text ; _txt_eff__raining ; _txt_eff__rainbow ; _txt_eff__scroll_through_options ; _txt_eff__show_text_behind_char ; _txt_eff__small ; _txt_eff__spin ; _txt_eff__spotlight ; _txt_eff__style ; _txt_eff__uncover_from_wall_to_wall ; _txt_eff__wave ; _txt_eff__zoom ; ; ================================================= #include-once #include <String.au3> #include <math.au3> #include <Array.au3> #include <Color.au3> ; --------------------------------- ; --------------------------------- ; ---- 1. pure text animation ---- ; --------------------------------- ; --------------------------------- ;=============================================================================== ; ; Description: Enlarge the given text in the given control from left to right. ; Syntax: _txt_eff__enlarge_from_left($winhandle, $control_id, [$text, [$delay, [$over_old]]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $over_old - 0: delete old text before starting / 1: do not delete it ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None ; ;=============================================================================== Func _txt_eff__enlarge_from_left($winhandle, $control_id, $text = "", $delay = 100, $over_old = 0) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) If $over_old = 1 Then $orig_text = ControlGetText($winhandle, "", $control_id) If StringLen($orig_text) < StringLen($text) Then For $i = StringLen($orig_text) To StringLen($text) $orig_text = $orig_text & " " Next ElseIf StringLen($orig_text) > StringLen($text) Then For $i = StringLen($text) To StringLen($orig_text) $text = $text & " " Next EndIf EndIf For $i = 1 To StringLen($text) $out_string = StringLeft($text, $i) If $over_old = 1 Then $out_string = $out_string & " " & StringTrimLeft($orig_text, $i + 2) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) Next Return 1 EndFunc ;==>_txt_eff__enlarge_from_left ;=============================================================================== ; ; Description: Enlarge the given text in the given control from right to left. ; Syntax: _txt_eff__enlarge_from_right($winhandle, $control_id, [$text, [$delay , [$over_old]]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), , $over_old - 0: delete old text before starting / 1: do not delete it ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): Only looks good when using a monospace font like Courier New ; ;=============================================================================== Func _txt_eff__enlarge_from_right($winhandle, $control_id, $text = "", $delay = 100, $over_old = 0) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) If $over_old = 1 Then $orig_text = ControlGetText($winhandle, "", $control_id) If StringLen($orig_text) < StringLen($text) Then For $i = StringLen($orig_text) To StringLen($text) $orig_text = $orig_text & " " Next ElseIf StringLen($orig_text) > StringLen($text) Then For $i = StringLen($text) To StringLen($orig_text) $text = $text & " " Next EndIf EndIf For $i = 1 To StringLen($text) $out_string = StringRight($text, $i) If $over_old = 1 Then $out_string = StringTrimRight($orig_text, $i + 2) & " " & $out_string If $i = StringLen($text) - 1 Then ExitLoop Else For $j = $i To StringLen($text) - 1 $out_string = " " & $out_string Next EndIf If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) Next If $over_old = 1 Then If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, " " & StringRight($text, StringLen($text) - 1)) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) EndIf Return 1 EndFunc ;==>_txt_eff__enlarge_from_right ;=============================================================================== ; ; Description: Move a given text in the given control in from left side. ; Syntax: _txt_eff__move_in_from_left($winhandle, $control_id, [$text, [$delay]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow) ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None ; ;=============================================================================== Func _txt_eff__move_in_from_left($winhandle, $control_id, $text = "", $delay = 100) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) For $i = 1 To StringLen($text) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, StringRight($text, $i)) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) Next EndFunc ;==>_txt_eff__move_in_from_left ;=============================================================================== ; ; Description: Move a given text in the given control out to left side. ; Syntax: _txt_eff__move_out_to_left($winhandle, $control_id, [$text, [$delay]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow) ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None ; ;=============================================================================== Func _txt_eff__move_out_to_left($winhandle, $control_id, $text = "", $delay = 100) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) For $i = StringLen($text) To 0 Step - 1 If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, StringRight($text, $i)) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, "") If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Return 1 EndFunc ;==>_txt_eff__move_out_to_left ;=============================================================================== ; ; Description: Move a given text in the given control in from right side. ; Syntax: _txt_eff__move_in_from_right($winhandle, $control_id, [$text, [$delay , [$text_min_width]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $text_min_width - enlarge the text to this min length if it shorter ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): Only looks good when using a monospace font like Courier New ; ;=============================================================================== Func _txt_eff__move_in_from_right($winhandle, $control_id, $text = "", $delay = 100, $text_min_width = 0) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) If $text_min_width <> 0 Then For $i = StringLen($text) To $text_min_width $text = $text & " " Next EndIf For $i = 1 To StringLen($text) $out_string = StringLeft($text, $i) For $j = $i To StringLen($text) - 1 $out_string = " " & $out_string Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) Next Return 1 EndFunc ;==>_txt_eff__move_in_from_right ;=============================================================================== ; ; Description: Move a given text in the given control out to right side. ; Syntax: _txt_eff__move_out_to_right($winhandle, $control_id, [$text, [$delay, [$text_min_width]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $text_min_width - enlarge the text to this min length if it shorter ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): Only looks good when using a monospace font like Courier New ; ;=============================================================================== Func _txt_eff__move_out_to_right($winhandle, $control_id, $text = "", $delay = 100, $text_min_width = 0) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) If $text_min_width <> 0 Then For $i = StringLen($text) To $text_min_width $text = $text & " " Next EndIf For $i = StringLen($text) To 0 Step - 1 $out_string = StringLeft($text, $i) For $j = $i To StringLen($text) - 1 $out_string = " " & $out_string Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, "") If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Return 1 EndFunc ;==>_txt_eff__move_out_to_right ;=============================================================================== ; ; Description: Uncover a given text in the given control behind a given password char. ; Syntax: _txt_eff__show_text_behind_char($winhandle, $control_id, [$text, [$delay, [$char]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $char - the foregroud char ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None ; ;=============================================================================== Func _txt_eff__show_text_behind_char($winhandle, $control_id, $text = "", $delay = 100, $char = "*") If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) For $i = 0 To StringLen($text) $out_string = StringLeft($text, $i) ; Add specified char for every char that's still "covered" For $j = 1 To StringLen($text) - $i $out_string = $out_string & $char Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) Next Return 1 EndFunc ;==>_txt_eff__show_text_behind_char ;=============================================================================== ; ; Description: Move a string through the given text in the given control. ; Syntax: _txt_eff__move_string_through_text($winhandle, $control_id, [$text, [$delay, [$string, [$show_complete_text]]]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $string - string to move through, $show_complete_text - 0: uncover text while animatione / 1: show it from start on ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None ; ;=============================================================================== Func _txt_eff__move_string_through_text($winhandle, $control_id, $text = "", $delay = 100, $string = "->", $show_complete_text = 0) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) For $i = 1 To StringLen($text) + 1 $out_string = StringLeft($text, $i - 1) & $string If $show_complete_text = 1 Then $out_string = $out_string & StringRight($text, StringLen($text) - $i - StringLen($string)) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Return 1 EndFunc ;==>_txt_eff__move_string_through_text ;=============================================================================== ; ; Description: Shows a airport-like effect in the given control. ; Syntax: _txt_eff__airport($winhandle, $control_id, [$text, [$delay, [$start_char, [$skip_chars]]]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $start_char - char to start the scrolling with (ASCII-Order), $skip_chars - number of chars to skip in every step ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None ; ;=============================================================================== Func _txt_eff__airport($winhandle, $control_id, $text = "", $delay = 100, $start_char = "A", $skip_chars = 1) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) For $i = 1 To StringLen($text) $act_char = StringMid($text, $i, 1) For $j = Asc($start_char) To Asc($act_char) Step $skip_chars $out_string = StringLeft($text, $i - 1) & Chr($j) For $k = 1 To StringLen($text) - $i $out_string = $out_string & Chr($j) Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) Next Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Return 1 EndFunc ;==>_txt_eff__airport ;=============================================================================== ; ; Description: Spins a given text around in the given control. ; Syntax: _txt_eff__spin($winhandle, $control_id, [$text, [$delay, [$num_spins, [$spin_delay]]]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $num_spins - number of spins, $spin_delay - delay between 2 spin-arounds ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None ; ;=============================================================================== Func _txt_eff__spin($winhandle, $control_id, $text = "", $delay = 100, $num_spins = "1", $spin_delay = 0) If $spin_delay = "" Then $spin_delay = $delay If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) For $i = 1 To $num_spins Sleep($spin_delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) For $j = 1 To Round(StringLen($text) / 2) - 1 Sleep($delay) $out_string = StringTrimRight(StringTrimLeft($text, $j), $j) For $k = 1 To $j $out_string = " " & $out_string & " " Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next For $j = Round(StringLen($text) / 2) - 1 To 1 Step - 1 Sleep($delay) $out_string = StringTrimRight(StringTrimLeft(_StringReverse($text), $j), $j) For $k = 1 To $j $out_string = " " & $out_string & " " Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, _StringReverse($text)) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) For $j = 1 To Round(StringLen($text) / 2) - 1 Sleep($delay) $out_string = StringTrimRight(StringTrimLeft(_StringReverse($text), $j), $j) For $k = 1 To $j $out_string = " " & $out_string & " " Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next For $j = Round(StringLen($text) / 2) - 1 To 1 Step - 1 Sleep($delay) $out_string = StringTrimRight(StringTrimLeft($text, $j), $j) For $k = 1 To $j $out_string = " " & $out_string & " " Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next Return 1 EndFunc ;==>_txt_eff__spin ;=============================================================================== ; ; Description: Widens a given text in the given control. ; Syntax: _txt_eff__broad($winhandle, $control_id, [$text, [$delay, [$char, [$go_back, [$delay_before_go_back]]]]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $char - char to insert into original text, $go_back - 1: call the ...small effect after widening it / 0: do not call it, $delay_before_go_back - time to wait before going back ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None ; ;=============================================================================== Func _txt_eff__broad($winhandle, $control_id, $text = "", $delay = 100, $char = " ", $go_back = "0", $delay_before_go_back = 500) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) $rounds = StringLen($text) - 1 For $i = 1 To $rounds $num_left = $i + ($i - 1) * StringLen($char) $left = StringLeft($text, $i + ($i - 1) * StringLen($char)) $right = StringRight($text, StringLen($text) - $num_left) $text = $left & $char & $right If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($delay) Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) If $go_back = "1" Then Sleep($delay_before_go_back) _txt_eff__small($winhandle, $control_id, $delay * 0.55, $char) ; _txt_eff__broad is about 45 % faster than _txt_eff__small EndIf Return 1 EndFunc ;==>_txt_eff__broad ;=============================================================================== ; ; Description: Smallens a given text in the given control. ; Syntax: _txt_eff__small($winhandle, $control_id, [$delay, [$char]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $delay - Animation speed (1 = fast, 1000 = slow), $char - char to remove ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None; fixed in v1.9.1 ; ;=============================================================================== Func _txt_eff__small($winhandle, $control_id, $delay = 100, $char = " ") $del_counter = 0 $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) $out_string = $text For $i = StringLen($text) To 1 Step - 1 Sleep($delay) If (StringMid($out_string, $i, 1) = $char) and ($del_counter < 1) Then $out_string = StringLeft($out_string, $i - 1) & StringTrimLeft($out_string, $i) $del_counter = $del_counter + 1 Else $del_counter = 0 EndIf If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next Return 1 EndFunc ;==>_txt_eff__small ;=============================================================================== ; ; Description: Shows a rain like effect, all letters are falling doiwn. ; Syntax: _txt_eff__raining($winhandle, $control_id, [$text, [$delay, [$duration, [$over_old]]]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $duration = maximum effect time (ms), $over_old - 0: Remove old text before startin effect / 1: Do not remove it ; Requirement(s): v3.1.1.66 (beta) or later ; ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None ; ;=============================================================================== Func _txt_eff__raining($winhandle, $control_id, $text = "", $delay = 50, $duration = 3000, $over_old = 0) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) If $over_old = 1 Then $orig_text = ControlGetText($winhandle, "", $control_id) $out_string = $orig_text If StringLen($orig_text) < StringLen($text) Then For $i = StringLen($orig_text) To StringLen($text) $out_string = $out_string & " " Next ElseIf StringLen($orig_text) > StringLen($text) Then For $i = StringLen($text) To StringLen($orig_text) $text = $text & " " Next EndIf Else $out_string = "" For $i = 1 To StringLen($text) $out_string = $out_string & " " Next EndIf $time = 0 While $time <= $duration - $delay Sleep($delay) $pos = Random(1, StringLen($text), 1) $out_string = StringLeft($out_string, $pos - 1) & StringMid($text, $pos, 1) & StringTrimLeft($out_string, $pos) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) $time = $time + $delay WEnd If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Return 1 EndFunc ;==>_txt_eff__raining ;=============================================================================== ; ; Description: Moves a capital letter trough the text. ; Syntax: ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), ; Requirement(s): v3.1.1.66 (beta) or later ; ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): New in v1.6 ; ;=============================================================================== Func _txt_eff__move_cap_char_through_text($winhandle, $control_id, $text = "", $delay = 50, $effect_width_chars = 1, $direction = "to_right", $convert_to_small = 0) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) If $direction = "to_left" Then $start = StringLen($text) - StringLen($effect_width_chars) $end = 0 $step = -1 Else $start = 0 $end = StringLen($text) - StringLen($effect_width_chars) $step = 1 EndIf $res_text = $text If $convert_to_small = 1 Then $res_text = StringLower($text) For $i = $start To $end Step $step Sleep($delay) $left = StringLeft($res_text, $i) $middle = StringUpper(StringMid($res_text, $i + 1, $effect_width_chars)) $right = StringTrimLeft($res_text, $i + $effect_width_chars) $out_string = $left & $middle & $right If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next Sleep($delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Return 1 EndFunc ;==>_txt_eff__move_cap_char_through_text ;=============================================================================== ; ; Description: Moves a small letter trough the text. ; Syntax: ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), ; Requirement(s): v3.1.1.66 (beta) or later ; ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): New in v1.6 ; ;=============================================================================== Func _txt_eff__move_small_char_through_text($winhandle, $control_id, $text = "", $delay = 50, $effect_width_chars = 1, $direction = "to_right", $convert_to_caps = 0) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) If $direction = "to_left" Then $start = StringLen($text) - StringLen($effect_width_chars) $end = 0 $step = -1 Else $start = 0 $end = StringLen($text) - StringLen($effect_width_chars) $step = 1 EndIf $res_text = $text If $convert_to_caps = 1 Then $res_text = StringUpper($text) For $i = $start To $end Step $step Sleep($delay) $left = StringLeft($res_text, $i) $middle = StringLower(StringMid($res_text, $i + 1, $effect_width_chars)) $right = StringTrimLeft($res_text, $i + $effect_width_chars) $out_string = $left & $middle & $right If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next Sleep($delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Return 1 EndFunc ;==>_txt_eff__move_small_char_through_text ;=============================================================================== ; ; Description: Scrolls through several options until the target text is found. ; Syntax: ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), ; Requirement(s): v3.1.1.66 (beta) or later ; ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): New in v1.6 ; ;=============================================================================== Func _txt_eff__scroll_through_options($winhandle, $control_id, $options, $target_text = "", $delay = 50) If $target_text = "" Then $target_text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) For $i = 0 To UBound($options) - 1 Sleep($delay) $out_string = $options[$i] If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) If $out_string = $target_text Then ExitLoop Next Return 1 EndFunc ;==>_txt_eff__scroll_through_options ;=============================================================================== ; ; Description: Uncovers the text going from left to right and ack until everything is uncovered. ; Syntax: ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), ; Requirement(s): v3.1.1.66 (beta) or later ; ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): New in v1.6 ; ;=============================================================================== Func _txt_eff__uncover_from_wall_to_wall($winhandle, $control_id, $text = "", $delay = 50, $turn_arounds = 1) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) $turn_arounds = $turn_arounds + 1 ; better for internal use $out_string = "" For $i = 1 To StringLen($text) $out_string = $out_string & " " Next For $i = 1 To $turn_arounds $start = $i $end = _Floor (StringLen($text) / $turn_arounds) * $turn_arounds If Mod(StringLen($text), $turn_arounds) >= $i Then $end = $end + $i Else $end = $end - $turn_arounds + $i EndIf If Mod($i, 2) = 1 Then ; ungerade $step = $turn_arounds Else _Swap($start, $end) $step = -$turn_arounds EndIf For $j = $start To $end Step $step Sleep($delay) $out_string = _StringInsertAtPos($out_string, $j, StringMid($text, $j, 1)) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next Next Return 1 EndFunc ;==>_txt_eff__uncover_from_wall_to_wall ;=============================================================================== ; ; Description: Simulates a wave through the text. ; Syntax: ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), ; Requirement(s): v3.1.1.66 (beta) or later ; ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): New in v1.6 ; ;=============================================================================== Func _txt_eff__wave($winhandle, $control_id, $text = "", $delay = 50, $effect_width = 3, $uncover_after_effect = 1, $direction = "to_right") If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) $orig_text = $text $empty_string = "" For $i = 1 To StringLen($text) + $effect_width * 2 $empty_string = $empty_string & " " Next For $i = 1 To $effect_width $text = " " & $text & " " Next If $direction = "to_right" Then $start = 1 $end = StringLen($text) + $effect_width * 2 $step = 1 Else $start = StringLen($text) + $effect_width * 2 $end = 1 $step = -1 EndIf For $i = $start To $end Step $step Sleep($delay) $out_string = _StringInsertAtPos($empty_string, $i, StringMid($text, $i, $effect_width)) $out_string = StringTrimLeft(StringTrimRight($out_string, $effect_width), $effect_width) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next If $uncover_after_effect = 1 Then Sleep($delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $orig_text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) EndIf Return 1 EndFunc ;==>_txt_eff__wave ;=============================================================================== ; ; Description: Shows a customizable blink effect. ; Syntax: ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), ; Requirement(s): v3.1.1.66 (beta) or later ; ; Return Value(s): 1 - in any other case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): New in v1.6, possible types: "all", "periodic", "parts", advanced: "all": none, "periodic": step, "parts": array containing cutting positions ; ;=============================================================================== Func _txt_eff__blink($winhandle, $control_id, $text = "", $show_delay = 50, $hide_delay = 50, $blink_type = "all", $advanced = "", $repetitions = 1) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) If $blink_type = "all" Then For $i = 1 To $repetitions Sleep($hide_delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($show_delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, "") If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) ElseIf $blink_type = "periodic" Then For $j = 1 To $repetitions For $i = 1 To $advanced $start = $i $end = _Floor (StringLen($text) / $advanced) * $advanced If Mod(StringLen($text), $advanced) >= $i Then $end = $end + $i Else $end = $end - $advanced + $i EndIf If Mod($i, 2) = 1 Then ; ungerade $step = $advanced Else _Swap($start, $end) $step = -$advanced EndIf $out_string = "" For $m = 1 To StringLen($text) $out_string = $out_string & " " Next For $k = $start To $end Step $step $out_string = _StringInsertAtPos($out_string, $k, StringMid($text, $k, 1)) Next Sleep($hide_delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($show_delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, "") If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) ElseIf $blink_type = "parts" Then For $j = 1 To $repetitions If IsArray($advanced) <> 1 Then $advanced = StringSplit($advanced, ".") _ArrayReverse($advanced) _ArrayPop($advanced) _ArrayReverse($advanced) EndIf For $i = -1 To UBound($advanced) - 1 $out_string = "" For $m = 1 To StringLen($text) - 1 $out_string = $out_string & " " Next If $i = -1 Then $out_string = _StringInsertAtPos($out_string, 0, StringMid($text, 1, $advanced[0])) ElseIf $i = UBound($advanced) - 1 Then $out_string = _StringInsertAtPos($out_string, $advanced[$i] + 1, StringMid($text, $advanced[$i] + 1, StringLen($text) - $advanced[$i])) Else $out_string = _StringInsertAtPos($out_string, $advanced[$i] + 1, StringMid($text, $advanced[$i] + 1, $advanced[$i + 1] - $advanced[$i])) EndIf Sleep($hide_delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Sleep($show_delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, "") If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) EndIf Return 1 EndFunc ;==>_txt_eff__blink ;=============================================================================== ; ; Description: Mixes up two chars and goes through the text. ; Syntax: ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), ; Requirement(s): v3.1.1.66 (beta) or later ; ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): New in v1.6 ; ;=============================================================================== Func _txt_eff__mix_up_chars($winhandle, $control_id, $text = "", $delay = 50, $effect_width = 1, $direction = "to_right") If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) $orig_text = $text For $i = 1 To $effect_width $text = " " & $text & " " Next If $direction = "to_right" Then $start = 1 $end = StringLen($text) + $effect_width ; *2 $step = 1 Else $start = StringLen($text) + $effect_width $end = 1 $step = -1 EndIf For $i = $start To $end Step $step Sleep($delay) $first_char = StringMid($text, $i, 1) $second_char = StringMid($text, $i + $effect_width, 1) If _IsCap($second_char) = 1 Then $first_char_res = StringUpper($first_char) ElseIf _IsCap($second_char) = 2 Then $first_char_res = StringLower($first_char) Else $first_char_res = $first_char EndIf If _IsCap($first_char) = 1 Then $second_char_res = StringUpper($second_char) ElseIf _IsCap($first_char) = 2 Then $second_char_res = StringLower($second_char) Else $second_char_res = $second_char EndIf $out_string = _StringInsertAtPos($text, $i, $second_char_res) $out_string = _StringInsertAtPos($out_string, $i + $effect_width, $first_char_res) $out_string = StringTrimLeft(StringTrimRight($out_string, $effect_width), $effect_width) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $orig_text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Return 1 EndFunc ;==>_txt_eff__mix_up_chars ;=============================================================================== ; ; Description: Highlights some chars and goes through the text. ; Syntax: ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), ; Requirement(s): v3.1.1.66 (beta) or later ; ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): New in v1.6, $display_type: 0 - show only effect, 1 - show text with effect, 2 - show whole text ; ;=============================================================================== Func _txt_eff__spotlight($winhandle, $control_id, $text = "", $delay = 50, $effect_width = 1, $highlighting_start_char = "(", $highlighting_end_char = ")", $display_type = 2, $direction = "to_right") If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) $orig_text = $text If $direction = "to_right" Then $start = 1 $end = StringLen($text) $step = 1 Else $start = StringLen($text) $end = 1 $step = -1 EndIf For $i = $start To $end Step $step Sleep($delay) If $display_type = 0 Then $empty_string = "" For $j = 1 To StringLen($text) $empty_string = $empty_string & " " Next $char = StringMid($text, $i, $effect_width) $out_string = _StringInsertAtPos($empty_string, $i + $effect_width, $highlighting_end_char, 0) $out_string = _StringInsertAtPos($out_string, $i, $char) $out_string = _StringInsertAtPos($out_string, $i, $highlighting_start_char, 0) ElseIf $display_type = 1 Then $out_string = StringLeft($text, $i) $out_string = _StringInsertAtPos($out_string, $i + $effect_width, $highlighting_end_char, 0) $out_string = _StringInsertAtPos($out_string, $i, $highlighting_start_char, 0) Else $out_string = _StringInsertAtPos($text, $i + $effect_width, $highlighting_end_char, 0) $out_string = _StringInsertAtPos($out_string, $i, $highlighting_start_char, 0) EndIf If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $out_string) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Next Sleep($delay) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $orig_text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) Return 1 EndFunc ;==>_txt_eff__spotlight ;=============================================================================== ; ; Description: Shows a about box with many different effects. ; Syntax: _txt_eff__about_messages($winhandle, $control_id, $texts, [$delay, [$showtime, [$pause, [$type]]]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $texts - Array containing all messages to show, $delay - Animation speed (1 = fast, 1000 = slow), $showtime - time the single message is shown (also possible: array with values correspondenting to $texts), $pause - time to wait until the next message is displayed, $type - type of the animation: "raining, "right_to_left", "left_to_right", "right_to_right", "left_to_left", "enlarge_from_left", "enlarge_from_right", "zoom_big_to_small", "zoom_small_to_big", "move_cap_char", "move_small_char", "wall_to_wall", "blink", "wave", "mix_up", "spotlight", "fade", "rainbow", "modern" ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - if $texts is an array ; 0 - if $texts is no array ; 2 - if $type is no valid type ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): None ; ;=============================================================================== Func _txt_eff__about_messages($winhandle, $control_id, $texts, $delay = 50, $showtime = 2000, $pause = 750, $type = "right_to_left") If IsArray($texts) <> 0 Then Local $static = _IsStatic($winhandle, $control_id) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, "") If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) If ($type = "right_to_left") or ($type = "left_to_right") or ($type = "left_to_left") or ($type = "right_to_right") Then $text_min_width = 14 For $i = 0 To UBound($texts) - 1 If StringLen($texts[$i]) > $text_min_width Then $text_min_width = StringLen($texts[$i]) Next $text_min_width = $text_min_width + 5 ElseIf $type = "modern" Then ; ------- parameters ------- Local $_l_height = 20 ; height of a single line (label) Local $_no_color = 0xECE9D8 Local $_black = 0x000000 Local $_messages = 5 Dim $_labels[$_messages] ; enlarge Arrray For $k = 1 To $_messages _ArrayInsert($texts, 0, "") _ArrayInsert($texts, UBound($texts), "") Next $_txt_eff_about_gui = GUICreate("About", 250, $_l_height + 20 + $_l_height * $_messages + 60) ; the about win's title, width and height here $_txt_eff_gui_ok_button = GUICtrlCreateButton("&Ok", 10, $_l_height + 20 + $_l_height * $_messages + 25, 230, 25, $BS_DEFPUSHBUTTON) For $k = 1 To $_messages $_style = $SS_CENTER ; styles are located here! $_labels[$k - 1] = GUICtrlCreateLabel("[Error]", 10, 50 + 25 * $k, 210, $_l_height, $_style) Next GUISetState(@SW_SHOW) For $k = 0 To UBound($texts) - $_messages GUICtrlSetColor($_labels[$_messages - 1], 0xECE9D8) For $p = 0 To $_messages - 1 GUICtrlSetPos($_labels[$p], 19, $_l_height + 20 + $_l_height * $p, 210, $_l_height) GUICtrlSetData($_labels[$p], $texts[$k + $p]) Next For $c = 0 To - $_l_height Step - 1 ; control's height is here again Sleep($delay) GUISetState(@SW_LOCK) ; move For $z = 0 To $_messages - 1 GUICtrlSetPos($_labels[$z], 19, $_l_height + 20 + $_l_height * $z + $c, 210, $_l_height) Next ; fade $red_diff = _ColorGetRed($_black) - _ColorGetRed($_no_color) $green_diff = _ColorGetGreen($_black) - _ColorGetGreen($_no_color) $blue_diff = _ColorGetBlue($_black) - _ColorGetBlue($_no_color) $red_res = Hex(_ColorGetRed($_black) + Round($red_diff / $_l_height * ($c + $_l_height + 1)), 2) $green_res = Hex(_ColorGetGreen($_black) + Round($green_diff / $_l_height * ($c + $_l_height + 1)), 2) $blue_res = Hex(_ColorGetBlue($_black) + Round($blue_diff / $_l_height * ($c + $_l_height + 1)), 2) GUICtrlSetColor($_labels[0], "0x" & $red_res & $green_res & $blue_res) $red_diff = _ColorGetRed($_no_color) - _ColorGetRed($_black) $green_diff = _ColorGetGreen($_no_color) - _ColorGetGreen($_black) $blue_diff = _ColorGetBlue($_no_color) - _ColorGetBlue($_black) $red_res = Hex(_ColorGetRed($_black) + Round($red_diff / $_l_height * ($c + $_l_height + 1)), 2) $green_res = Hex(_ColorGetGreen($_black) + Round($green_diff / $_l_height * ($c + $_l_height + 1)), 2) $blue_res = Hex(_ColorGetBlue($_black) + Round($blue_diff / $_l_height * ($c + $_l_height + 1)), 2) GUICtrlSetColor($_labels[$_messages - 1], "0x" & $red_res & $green_res & $blue_res) GUISetState(@SW_UNLOCK) ; check if close event is there $_about_msg = GUIGetMsg() If $_about_msg = $GUI_EVENT_CLOSE Or $_about_msg = $_txt_eff_gui_ok_button Then ExitLoop 2 Next Next GUIDelete($_txt_eff_about_gui) Else For $i = 0 To UBound($texts) - 1 If IsArray($showtime) = 1 Then $real_showtime = $showtime[$i] Else $real_showtime = $showtime EndIf Sleep($pause) Select Case $type = "right_to_left" _txt_eff__move_in_from_right($winhandle, $control_id, $texts[$i], $delay, $text_min_width) Sleep($real_showtime) _txt_eff__move_out_to_left($winhandle, $control_id, $texts[$i], $delay) Case $type = "left_to_right" _txt_eff__move_in_from_left($winhandle, $control_id, $texts[$i], $delay) Sleep($real_showtime) _txt_eff__move_out_to_right($winhandle, $control_id, $texts[$i], $delay, $text_min_width) Case $type = "raining" _txt_eff__raining($winhandle, $control_id, $texts[$i], $delay, Round($real_showtime / 3), 1) Sleep($real_showtime) Case $type = "right_to_right" _txt_eff__move_in_from_right($winhandle, $control_id, $texts[$i], $delay, $text_min_width) Sleep($real_showtime) _txt_eff__move_out_to_right($winhandle, $control_id, $texts[$i], $delay, $text_min_width) Case $type = "left_to_left" _txt_eff__move_in_from_left($winhandle, $control_id, $texts[$i], $delay) Sleep($real_showtime) _txt_eff__move_out_to_left($winhandle, $control_id, $texts[$i], $delay) Case $type = "enlarge_from_left" _txt_eff__enlarge_from_left($winhandle, $control_id, $texts[$i], $delay, 1) Sleep($real_showtime) Case $type = "enlarge_from_right" _txt_eff__enlarge_from_right($winhandle, $control_id, $texts[$i], $delay, 1) Sleep($real_showtime) Case $type = "zoom_big_to_small" _txt_eff__zoom($winhandle, $control_id, $texts[$i], $delay, 20, 14, 1, "Times New Roman", 0) Sleep($real_showtime) _txt_eff__zoom($winhandle, $control_id, $texts[$i], $delay, 14, 2, 2, "Times New Roman", 1) Case $type = "zoom_small_to_big" _txt_eff__zoom($winhandle, $control_id, $texts[$i], $delay, 2, 14, 2, "Times New Roman", 0) Sleep($real_showtime) _txt_eff__zoom($winhandle, $control_id, $texts[$i], $delay, 14, 20, 1, "Times New Roman", 1) Case $type = "move_cap_char" _txt_eff__move_cap_char_through_text($winhandle, $control_id, $texts[$i], $delay, 1, "to_right", 0) Sleep($real_showtime) Case $type = "move_small_char" _txt_eff__move_small_char_through_text($winhandle, $control_id, $texts[$i], $delay, 1, "to_right", 1) Sleep($real_showtime) Case $type = "wall_to_wall" _txt_eff__uncover_from_wall_to_wall($winhandle, $control_id, $texts[$i], $delay, 1) Sleep($real_showtime) Case $type = "blink" _txt_eff__blink($winhandle, $control_id, $texts[$i], $delay, 500, "all", "", 2) Sleep($real_showtime) Case $type = "wave" _txt_eff__wave($winhandle, $control_id, $texts[$i], $delay, 3, 1, "to_right") Sleep($real_showtime) Case $type = "mix_up" _txt_eff__mix_up_chars($winhandle, $control_id, $texts[$i], $delay, 1, "to_right") Sleep($real_showtime) Case $type = "spotlight" _txt_eff__spotlight($winhandle, $control_id, $texts[$i], $delay, 1, "<", ">", 2, "to_right") Sleep($real_showtime) Case $type = "fade" _txt_eff__fade_in($winhandle, $control_id, $texts[$i], 1000, 100, "win_xp_bg") Sleep($real_showtime) _txt_eff__fade_out($winhandle, $control_id, $texts[$i], 1000, 100, "win_xp_bg") Case $type = "rainbow" _txt_eff__rainbow($winhandle, $control_id, $texts[$i], $delay, Round($delay / 10), 0) Sleep($real_showtime) Case Else Return 2 EndSelect Next EndIf Return 1 Else Return 0 EndIf EndFunc ;==>_txt_eff__about_messages ; --------------------------------- ; --------------------------------- ; ----- 2. control animation ----- ; --------------------------------- ; --------------------------------- ;=============================================================================== ; ; Description: Zooms the text in the control in or out. ; Syntax: _txt_eff__zoom($winhandle, $control_id, [$text, [$delay, [$start_size, [$end_size, [$step, [$font, [$remove]]]]]]]) ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $text - the text for the animation, $delay - Animation speed (1 = fast, 1000 = slow), $start_size - font size at the begining of the effect, $end_size - font size at the end of the effect, $step - step on de-/increasing the font size, $font - font name, $remove 0: Don't remove text after effect / 1: remove text after effect ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): Minimum size should be 2. If $text is left empty, cthe current control's text will be used. Step has to be positiv in any case. ; Questions to solve: ; How to read the current font size and name of the control?? ; How to make the control resize itself to the text's width and height?? ;=============================================================================== Func _txt_eff__zoom($winhandle, $control_id, $text = "", $delay = 50, $start_size = 9, $end_size = 2, $step = 1, $font = "Courier New", $remove = 0) $start_ctrl_pos = ControlGetPos($winhandle, "", $control_id) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) If $start_size > $end_size Then $step = - ($step) For $i = $start_size To $end_size Step $step Sleep($delay) GUICtrlSetFont($control_id, $i, -1, -1, $font) If $i = $start_size Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) GUISetState(@SW_UNLOCK, $winhandle) EndIf Next If $remove = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, "") GUISetState(@SW_UNLOCK, $winhandle) ControlMove($winhandle, "", $control_id, $start_ctrl_pos[0], $start_ctrl_pos[1], $start_ctrl_pos[2], $start_ctrl_pos[3]) EndIf Return 1 EndFunc ;==>_txt_eff__zoom ;=============================================================================== ; ; Description: Sets the text italic, underlined or bold. ; Syntax: ; Parameter(s): ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): types: italic, underline, bold ; Questions to solve: ; How to read out text size and so on on the func's startup? ;=============================================================================== Func _txt_eff__style($winhandle, $control_id, $text = "", $type = "bold", $font = "Courier New", $remove = 1, $show_time = 1500) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) GUISetState(@SW_LOCK, $winhandle) If $type = "bold" Then GUICtrlSetFont($control_id, -1, 800, -1, $font) ElseIf $type = "underline" Then GUICtrlSetFont($control_id, -1, -1, 4, $font) ElseIf $type = "italic" Then GUICtrlSetFont($control_id, -1, -1, 2, $font) EndIf GUISetState(@SW_UNLOCK, $winhandle) If $remove = 1 Then Sleep($show_time) GUISetState(@SW_LOCK, $winhandle) GUICtrlSetFont($control_id, -1, 400, 0, $font) GUISetState(@SW_UNLOCK, $winhandle) EndIf Return 1 EndFunc ;==>_txt_eff__style ; --------------------------------- ; --------------------------------- ; ----- 3. colourful effects ----- ; --------------------------------- ; --------------------------------- ;=============================================================================== ; ; Description: Changes the text color in the given order and time. ; Syntax: ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $texts - Array containing all messages to show, $delay - Animation speed (1 = fast, 1000 = slow) ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): $colors can be either an array or a string ; Question: Can this be used in "foreign" windows too? ; Look into the current help file to see, which controls are supported ;=============================================================================== Func _txt_eff__color_sequence($winhandle, $control_id, $text = "", $delay = 50, $colors = "black.green.blue. 0xffffff") If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) If IsArray($colors) <> 1 Then $colors = StringStripWS($colors, 8) ; delete all spaces $colors = StringSplit($colors, ".") ; kill first element _ArrayReverse($colors) _ArrayPop($colors) _ArrayReverse($colors) EndIf For $i = 0 To UBound($colors) - 1 Sleep($delay) $color = $colors[$i] If StringIsXDigit($color) = 0 Then $color = _GetColorByName($color) GUICtrlSetColor($control_id, $color) Next Return 1 EndFunc ;==>_txt_eff__color_sequence ;=============================================================================== ; ; Description: Changes the text color in the order of the rainbow. ; Syntax: ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $texts - Array containing all messages to show, $delay - Animation speed (1 = fast, 1000 = slow) ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): $colors can be either an array or a string ; Look into the current help file to see, which controls are supported ;=============================================================================== Func _txt_eff__rainbow($winhandle, $control_id, $text = "", $duration_per_change = 2000, $precision = 50, $direction = 0) If $direction = 0 Then _txt_eff__color_to_color($winhandle, $control_id, $text, $duration_per_change, "black.red.orange.yellow.green.blue.violet.black", $precision) Else _txt_eff__color_to_color($winhandle, $control_id, $text, $duration_per_change, "black.violet.blue.green.yellow.orange.red.black", $precision) EndIf EndFunc ;==>_txt_eff__rainbow ;=============================================================================== ; ; Description: Permorms a fade from one color to another. ; Syntax: ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $texts - Array containing all messages to show, $delay - Animation speed (1 = fast, 1000 = slow) ; Requirement(s): v3.1.1.66 (beta) or later ; Return Value(s): 1 - in any case ; Author(s): peethebee <peter_opali@gmx.de> ; Note(s): Look into the current help file to see, which controls are supported ;=============================================================================== Func _txt_eff__color_to_color($winhandle, $control_id, $text = "", $duration_per_change = 2000, $colors = "black. white", $precision = 100) If $text = "" Then $text = ControlGetText($winhandle, "", $control_id) Local $static = _IsStatic($winhandle, $control_id) If IsArray($colors) <> 1 Then $colors = StringStripWS($colors, 8) ; delete all spaces $colors = StringSplit($colors, ".") ; kill first element _ArrayReverse($colors) _ArrayPop($colors) _ArrayReverse($colors) EndIf For $i = 0 To UBound($colors) - 2 If StringIsXDigit($colors[$i]) = 0 Then $start_color = _GetColorByName($colors[$i]) Else $start_color = $colors[$i] EndIf If StringIsXDigit($colors[$i + 1]) = 0 Then $end_color = _GetColorByName($colors[$i + 1]) Else $end_color = $colors[$i + 1] EndIf For $j = 1 To $precision Sleep(Round($duration_per_change / $precision)) $red_diff = _ColorGetRed($end_color) - _ColorGetRed($start_color) $green_diff = _ColorGetGreen($end_color) - _ColorGetGreen($start_color) $blue_diff = _ColorGetBlue($end_color) - _ColorGetBlue($start_color) $red_res = Hex(_ColorGetRed($start_color) + Round($red_diff / $precision * $j), 2) $green_res = Hex(_ColorGetGreen($start_color) + Round($green_diff / $precision * $j), 2) $blue_res = Hex(_ColorGetBlue($start_color) + Round($blue_diff / $precision * $j), 2) GUICtrlSetColor($control_id, "0x" & $red_res & $green_res & $blue_res) If $j = 1 And $i = 0 Then If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, $text) If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) EndIf Next Next Return 1 EndFunc ;==>_txt_eff__color_to_color ; Fades a text out (black to $color) Func _txt_eff__fade_out($winhandle, $control_id, $text = "", $duration = 2500, $precision = 100, $color = "white") _txt_eff__color_to_color($winhandle, $control_id, $text, $duration, "black. " & $color, $precision) Local $static = _IsStatic($winhandle, $control_id) If $static = 1 Then GUISetState(@SW_LOCK, $winhandle) ControlSetText($winhandle, "", $control_id, "") If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle) EndFunc ;==>_txt_eff__fade_out ; Fades a text out ($color to black) ; ; How to get the background color of an control? ; How to calculate a harmonious color (for background)? ; Func _txt_eff__fade_in($winhandle, $control_id, $text = "", $duration = 2500, $precision = 100, $color = "white") _txt_eff__color_to_color($winhandle, $control_id, $text, $duration, $color & ". black", $precision) EndFunc ;==>_txt_eff__fade_in ; --------------------------------- ; --------------------------------- ; ----- 4. helping functions ----- ; --------------------------------- ; --------------------------------- Func _StringInsertAtPos($string, $pos, $insert, $overwrite = 1) If $overwrite = 0 Then Return StringLeft($string, $pos - 1) & $insert & StringTrimLeft($string, $pos - 1) Else Return StringLeft($string, $pos - 1) & $insert & StringTrimLeft($string, $pos - 1 + StringLen($insert)) EndIf EndFunc ;==>_StringInsertAtPos ; Source: Help file Func _Swap(ByRef $a, ByRef $b) ;swaps two vars Local $t $t = $a $a = $b $b = $t EndFunc ;==>_Swap Func _IsCap($char) If Asc($char) < 90 And Asc($char) > 65 Then Return 1 ElseIf Asc($char) < 122 And Asc($char) > 97 Then Return 2 Else Return 0 EndIf EndFunc ;==>_IsCap ; Created with help of XDrop 0.17 Func _GetColorByName($name) Select Case $name = "black" Return "0x000000" Case $name = "white" Return "0xffffff" Case $name = "red" Return "0xff0000" Case $name = "blue" Return "0x0000ff" Case $name = "green" Return "0x00ff00" Case $name = "yellow" Return "0xffff00" Case $name = "violet" Return "0xAE7BE1" Case $name = "win_xp_bg" Return "0xECE9D8" EndSelect EndFunc ;==>_GetColorByName Func _IsStatic($winhandle, $control_id) Local $ret = DllCall("user32.dll", "int", "GetClassName", "hwnd", ControlGetHandle($winhandle, "", $control_id), "str", "", "int", 128) If StringInStr($ret[2], "Static") <> 0 Then Return 1 Return 0 EndFunc ;==>_IsStatic [font="Verdana"]In work:[list=1][*]InstallIt[*]New version of SpaceWar[/list] [/font] Link to comment Share on other sites More sharing options...
xcal Posted April 8, 2007 Share Posted April 8, 2007 http://www.autoitscript.com/forum/index.ph...409&hl=text How To Ask Questions The Smart Way Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now