Jump to content
Sign in to follow this  
MrVietA2

Slider control problem

Recommended Posts

MrVietA2

Hello !

I tried to create 2 slider to set the state of video in my script :

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <SliderConstants.au3>
#include <DSEngine.au3>

Global $MovieGUI, $VideoPlay, $VideoStop, $VideoOpen, $VideoPos, $VideoVol, $ViewerVideo, $VideoPos2
Global $mVol, $mLength, $mVideoPlaying

$MovieGUI = GUICreate("Movie Player", 740, 590, -1, -1, -1)
$VideoPlay = GUICtrlCreateButton("PLAY", 20, 520, 100, 50)
$VideoStop = GUICtrlCreateButton("STOP", 140, 520, 100, 50)
$VideoOpen = GUICtrlCreateButton("OPEN", 260, 520, 100, 50)
$VideoSlow = GUICtrlCreateButton("SLOW", 380, 520, 100, 50)
$VideoSpeed = GUICtrlCreateButton("SPEED", 500, 520, 100, 50)
$VideoPos = GUICtrlCreateSlider(20, 490, 660, 25, $TBS_ENABLESELRANGE)
$ViewerVideo = GUICreate("", 660, 400, 20, 70, $WS_POPUP, BitOR($WS_EX_TOOLWINDOW, $WS_DISABLED, $WS_EX_MDICHILD), $MovieGUI)
$VideoPos2 = GUICtrlCreateSlider(0, 380, 660, 25, $TBS_ENABLESELRANGE)
GUICtrlSetBkColor(-1, 0x0)
GUISetBkColor(0, $ViewerVideo)
WinSetTrans($ViewerVideo, "", 220)
GUISetState(@SW_SHOW, $ViewerVideo)
GUISetState(@SW_SHOW, $MovieGUI)

While 1
$MSG = GUIGetMsg()
Switch $MSG
Case $GUI_EVENT_CLOSE
Exit
Case $VideoOpen
$PathVideo = FileOpenDialog("Open Video", "", "All Video(*.Avi;*.Wmp;*.Mkv;*.Flv;*.Mp4;*.Mpg;*.Ts)|All File(*.*)|Video(*.Avi; *.Wmp)", 1 + 4)
PlayVideo($PathVideo)
EndSwitch

If $mVideoPlaying = True Then
;~ GUICtrlSetState($VideoPos2, $GUI_ONTOP)
;
Switch $MSG
Case $VideoStop
Engine_StopPlayback()
GUICtrlSetData($VideoPos, Engine_GetLength())
GUISetBkColor(0x00000, $ViewerVideo)
WinSetTrans($ViewerVideo, "", 220)
Case $VideoPlay
Switch GUICtrlRead($VideoPlay)
Case "PLAY"
Engine_PausePlayback()
GUICtrlSetData($VideoPlay, "PAUSE")
Case "PAUSE"
Engine_StartPlayback()
GUICtrlSetData($VideoPlay, "PLAY")
EndSwitch
Case $VideoSpeed
;
Case $VideoSlow
;
EndSwitch
;
$mGGCI = GUIGetCursorInfo($MovieGUI)
If IsArray($mGGCI) And $mGGCI[4] = $VideoPos And $mGGCI[2] = 1 Then
While $mGGCI[2]
$mGGCI = GUIGetCursorInfo($MovieGUI)
$mPos = GUICtrlRead($VideoPos)
Sleep(1)
WEnd
Engine_SetPosition($mPos)
EndIf

GUICtrlSetData($VideoPos, Engine_GetPosition())

GUICtrlSetData($VideoPos2, Engine_GetPosition())EndIf
WEnd

Func PlayVideo($SavePath)
If $SavePath <> "" Then
Global $mVol = GUICtrlRead($VideoVol)
Engine_LoadFile($SavePath, $ViewerVideo)
Engine_StartPlayback()
$mLength = Engine_GetLength()
GUICtrlSetLimit($VideoPos, $mLength, 0)

GUICtrlSetLimit($VideoPos2, $mLength, 0)$mVideoPlaying = True
EndIf
EndFunc ;==>PlayVideo

The slider 2 ($VideoPos2) is hidden while the film is screened, but I want it to be shown. Could you tell me how to do this ?

All answers are welcome.

DSEngine.zip

Edited by MrVietA2

Share this post


Link to post
Share on other sites
MrVietA2

Thanks JohnOne but it doesn't work :(

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • nacerbaaziz
      By nacerbaaziz
      Hi guys
      I have a question about the slider  controle
      There is a problem with screen readers, wen we Using a screen reader We usually move between GUI controls using the tab key.
      But when you create a slider , beside to it there are  buttons and check boxes or any other controls, When I move between the GUI controls using the tab key I can not find the slider.
      But if it were alone in the window, I would find it normally.
      Is there a solution to Solve this problem please?
      This is the code i tried
      #include <GUIConstantsEx.au3>
      #include <WindowsConstants.au3>
      #include <MsgBoxConstants.au3>
      #include <SliderConstants.au3>
      main()
      Func main()
          GUICreate("slider", 200, 200, -1, -1)
      GUICtrlCreateGroup("slider", 10, 10, 240, 50)
          Local $idSlider1 = GUICtrlCreateSlider(50, 30, 200, 20, BitOr($TBS_DOWNISLEFT, $TBS_BOTH))
          GUICtrlSetLimit(-1, 100, 0)
      ;GUIStartGroup("")
          Local $idButton = GUICtrlCreatebutton("Value?", 75, 70, 70, 20)
          GUISetState(@SW_SHOW)
          GUICtrlSetData($idSlider1, 10)
      while 1
      switch GUIGetMsg()
      case $GUI_EVENT_CLOSE
      exit
      case $idButton
                  MsgBox($MB_SYSTEMMODAL, "slider1", GUICtrlRead($idSlider1))
      endSwitch
      Wend
      EndFunc
      [Click and drag to move]
       
       
    • b9k
      By b9k
      Hi, I am stuck on a GUI problem and would like your help to solve it.
      I am trying to automate the SoundWire Server app to match my current system volume level while it is minimized to the notification area (so no clicking or stealing focus),
      I can already get the handle and alter the tracker position by sending a WM_SETPOS message, but somehow the actual volume is not changed: I think I need to do something else to trigger the event handler for the value change and propagate it correctly.
      This is the control summary from Au3 info:
      >>>> Window <<<< Title: SoundWire Server Class: #32770 Position: 441, 218 Size: 566, 429 Style: 0x94CA00C4 ExStyle: 0x00050101 Handle: 0x0000000000510E12 >>>> Control <<<< Class: msctls_trackbar32 Instance: 4 ClassnameNN: msctls_trackbar324 Name: Advanced (Class): [CLASS:msctls_trackbar32; INSTANCE:4] ID: 6002 Text: Position: 51, 222 Size: 47, 126 ControlClick Coords: 1, 101 Style: 0x5001000A ExStyle: 0x00000000 Handle: 0x00000000001234C8 >>>> Mouse <<<< Position: 496, 567 Cursor ID: 2 Color: 0xF0F0F0 >>>> StatusBar <<<< >>>> ToolsBar <<<< >>>> Visible Text <<<< Default multimedia device Tray on Start Static Server Address: 192.168.1.8 Status: Connected to B9K~OP3 Audio Output Audio Input Level Record to File Input Select: 44.1 kHz Minimize to Master Volume Mute >>>> Hidden Text <<<< Slider2 Mute OK Cancel Label Balance Slider1 Volume Front L/R Fr C/LFE Side L/R Back L/R
      I am attaching the program in question so you don't have to install it (i don't know if it is portable enough, tough): 

      SoundWire Server_files.zip

      Thanks in advance and I hope I didn't post in the wrong section
    • Elzie
      By Elzie
      Hi I am trying to make a gui that uses a slide to change pictures and uses internet-read from  guinness function.
      Thanks for your help.
      Ok found the issue
      #include <GUIConstantsEx.au3> #include <SliderConstants.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> #include <WinAPIRes.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 229, 165, 2392, 436) $Slider = GUICtrlCreateSlider(32, 128, 150, 29) GUICtrlSetLimit($Slider, 2, 1) GUICtrlSetData($Slider, 1) GUICtrlSetBkColor($Slider, 0x0099FF) GUICtrlSetColor(-1, 0xA6CAF0) $hSlider_Handle = GUICtrlGetHandle(-1) $sFile1 = _GetURLImage("http://www.pendriveapps.com/wp-content/uploads/autoit.jpg ", @TempDir) $sFile2 = _GetURLImage("http://domoticx.com/wp-content/uploads/autoit-logo-200x154.jpg ", @TempDir) $Hpic1 = GUICtrlCreatePic($sFile1, 56, 8, 108, 108, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS)) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Slider $a = GUICtrlRead($Slider) If $a = 2 Then GUICtrlDeleteImage($Hpic1) $Hpic2 = GUICtrlCreatePic($sFile2, 56, 8, 108, 108, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS)) ElseIf $a = 1 Then GUICtrlDeleteImage($hpic2) $Hpic1 = GUICtrlCreatePic($sFile1, 56, 8, 108, 108, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS)) EndIf EndSwitch WEnd Func _GetURLImage($sURL, $sDirectory = @ScriptDir) ; Author ........: guinness Local $hDownload, $sFile $sFile = StringRegExpReplace($sURL, "^.*/", "") If @error Then Return SetError(1, 0, $sFile) EndIf If StringRight($sDirectory, 1) <> "\" Then $sDirectory = $sDirectory & "\" EndIf $sDirectory = $sDirectory & $sFile If FileExists($sDirectory) Then Return $sDirectory EndIf $hDownload = InetGet($sURL, $sDirectory, 17, 1) While InetGetInfo($hDownload, 2) = 0 If InetGetInfo($hDownload, 4) <> 0 Then InetClose($hDownload) Return SetError(1, 0, $sDirectory) EndIf Sleep(105) WEnd InetClose($hDownload) Return $sDirectory EndFunc ;==>_GetURLImage Func GUICtrlDeleteImage($iCtrlID) ; Author ........: guinness Local Const $STM_SETIMAGE = 0x0172 Local $aSetImage = 0, _ $bReturn = True, _ $iMsg = 0 Switch _WinAPI_GetClassName($iCtrlID) Case 'Button' ; button, checkbox, groupbox, radiobutton. Local $aButton = [$IMAGE_BITMAP, $IMAGE_ICON] $aSetImage = $aButton $aButton = 0 Case 'Static' ; icon, label, picture. Local $aStatic = [$IMAGE_BITMAP, $IMAGE_CURSOR, $IMAGE_ICON] $aSetImage = $aStatic $aStatic = 0 $iMsg = $STM_SETIMAGE Case Else $bReturn = False EndSwitch If $bReturn Then $bReturn = False Local $hImage = 0 For $i = 0 To UBound($aSetImage) - 1 $hImage = GUICtrlSendMsg($iCtrlID, $iMsg, $aSetImage[$i], 0) If $hImage <> 0 Then Switch $aSetImage[$i] Case $IMAGE_BITMAP $bReturn = _WinAPI_DeleteObject($hImage) Case $IMAGE_CURSOR $bReturn = _WinAPI_DeleteObject($hImage) If Not $bReturn Then $bReturn = _WinAPI_DestroyCursor($hImage) > 0 EndIf Case $IMAGE_ICON $bReturn = _WinAPI_DeleteObject($hImage) If Not $bReturn Then $bReturn = _WinAPI_DestroyIcon($hImage) > 0 EndIf EndSwitch ExitLoop EndIf Next If Not $bReturn Then $bReturn = GUICtrlSetImage($iCtrlID, 'shell32.dll', -50) > 0 EndIf EndIf Return $bReturn EndFunc ;==>GUICtrlDeleteImage  
    • Grosminet
      By Grosminet
      I would like to use a WM_NOTIFY function to manage a slider thumb position change, according this MSN trackbar link TRBN_THUMBPOSCHANGING .
      Does somebody know why the notification code "TRBN_THUMBPOSCHANGING" for the slider control seems ignored in "WindowsConstants.au3" include file ?
      Searching in AutoIt or MSN forum , or googling this code, I don't succeed to catch any code info !!! Is it obsolete ?
      Thanks
      Alain.
    • GroovyMan8750
      By GroovyMan8750
      I am attempting to use sliders to create a Q&A report that outputs a log/txt  file on a PC/Server...at least I got that to work.
      I have the sliders set, however I cannot get the number range to show on the GUI correctly. Could use some guidance here.
      When I output the value of each slider into a log file, the values are really goofed. Could use some more guidance here too.
      Any help would be greatly appreciated. I am a noob, take pity. I have self abused already!
      test1.au3
×