ich hab das problem ,dass ich eine playliste habe und nun per drag and drop die reihenolge ändern will. Das ganze sollte dann ungefähr wie unten aussehen.
Ist das möglich und wenn, wie?
v.g. JuraX
listvieweintrag verschieben
-
- [ offen ]
-
JuraX -
23. Februar 2010 um 15:02 -
Geschlossen -
Erledigt
-
-
- Offizieller Beitrag
Guckst du: Eintrag in einem ListView verschieben
-
danke hab ich ein bisschen umformoliert aber wenn ich droppe erscheint eine zahl
Spoiler anzeigen
[autoit]Func _MoveListViewItem()
[/autoit] [autoit][/autoit] [autoit]
Local $von, $bis, $down = GUIGetCursorInfo($hwnd)If $down[4] = $hListView Then
[/autoit] [autoit][/autoit] [autoit]
$von = _GUICtrlListView_GetHotItem($hListView)While $down[2]
[/autoit] [autoit][/autoit] [autoit]
$down = GUIGetCursorInfo($hwnd)
Sleep(50)
WEndIf $down[4] = $hListView Then
[/autoit] [autoit][/autoit] [autoit]
$bis = _GUICtrlListView_GetHotItem($hListView)If Not ($von = $bis) Then
[/autoit] [autoit][/autoit] [autoit]
_MoveLVItem($von, $bis - $von, $hListView)
_GUICtrlListView_SetItemState($hListView, $bis, 1, 1)
EndIf
EndIf
EndIf
EndFunc ;==>_MoveListViewItemFunc _MoveLVItem($ItemIndex, $StepWidth, $hLV)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
If ($ItemIndex + $StepWidth) < 0 Or _
($ItemIndex + $StepWidth) > _GUICtrlListView_GetItemCount($hLV) - 1 Then
SetError(1)
Return 0
EndIf
Local $txt2skip = _GUICtrlListView_GetItemText($hLV, $ItemIndex)If $StepWidth > 0 Then
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_InsertItem($hLV, $ItemIndex + $StepWidth + 1, $txt2skip)
_GUICtrlListView_DeleteItem($hLV, $ItemIndex)
Else
_GUICtrlListView_InsertItem($hLV, $ItemIndex + $StepWidth, $txt2skip)
_GUICtrlListView_DeleteItem($hLV, $ItemIndex + 1)
EndIfReturn -1
[/autoit]
EndFunc ;==>_MoveLVItem -
Hallo JuraX,
von 2007 bis heute hat sich anscheinend die Syntax des Befehls _GUICtrlListView_InsertItem geändert. Der Text wird als 2. Parameter erwartet und danach der Itemindex, bei dir ist es aber genau umgekehrt,
mfg (Auto)Bert
-
nach unten verschieben geht aber nach oben nicht weiß jmd wieso?
-
hab mich geirrt er verschiebt das ganze irgendwo hin nicht wo es hin soll
-
Wenn du dein lauffähiges Skript postest verrate ich dir warum
-
Halo JuraX,
bei mir klappt es nach oben immer, aber nach unten nur in ca. 80% der Fälle in dn anderen 20% ist der Eintrg doppelt da (also das ursprüngliche wird nicht gelöscht. Hier meine geänderte func:
[autoit];----------------------------------------------------------------------------------------------------------------------
[/autoit][autoit][/autoit][autoit]
; Funktion _MoveLVItem($ItemIndex, $StepWidth, $hLV)
;
; Beschreibung verschiebt per Index angegebenen Eintrag eines ListViewCtrl um eine Anzahl Positionen
;
; Parameter $ItemIndex: Index der Zeile
; $StepWidth: Anzahl Zeilen um die der Eintrag verschoben wird (negative Zahl - aufwärts)
; $hLV: ListView ID
;
; Erfordernisse #include <GuiListView.au3>
;
; Autor BugFix ([email='bugfix@autoit.de'][/email])
;----------------------------------------------------------------------------------------------------------------------
#include <GuiListView.au3>
Func _MoveLVItem($ItemIndex, $StepWidth, $hLV)
If ($ItemIndex + $StepWidth) < 0 Or _
($ItemIndex + $StepWidth) > _GUICtrlListView_GetItemCount($hLV) - 1 Then
SetError(1)
Return 0
EndIf
Local $txt2skip = _GUICtrlListView_GetItemText($hLV, $ItemIndex)
;bei mehrsplatigen LVs noch umstellen auf _GUICtrlListView_GetItemTextArray
ConsoleWrite($txt2skip & " " & $ItemIndex & " " & $StepWidth & @crlf)If $StepWidth > 0 Then
[/autoit][autoit][/autoit][autoit]
ConsoleWrite(">0" & @CRLF)
_GUICtrlListView_InsertItem($hLV, $txt2skip, $ItemIndex + $StepWidth + 1)
_GUICtrlListView_DeleteItem($hLV, $ItemIndex)
Else
ConsoleWrite("Else" & @CRLF)
_GUICtrlListView_InsertItem($hLV, $txt2skip, $ItemIndex + $StepWidth)
_GUICtrlListView_DeleteItem($hLV, $ItemIndex + 1)
EndIfReturn -1
[/autoit]
EndFunc ;==>_MoveLVItemmfg (Auto)Bert
-
hier bitte:
Spoiler anzeigen
[autoit]#NoTrayIcon
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>
#include <Bass.au3>
#include <_GetFilesFolder_Rekursiv.au3>
#include <GuiListView.au3>
#include <Misc.au3>
#include <BassConstants.au3>
#include <WindowsConstants.au3>
#include <ListViewConstants.au3>
#include <GUIConstantsEx.au3>
#include <StructureConstants.au3>
#include <WinAPI.au3>
#include <GDIPlusConstants.au3>
#include <basstags.au3>
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=INRadio Entwicklungs-umgebung\INRadio.ico
#AutoIt3Wrapper_Outfile=Localtuner.exe
#AutoIt3Wrapper_Res_Fileversion=2.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=JuraX
#AutoIt3Wrapper_Res_Language=1031
#AutoIt3Wrapper_Res_Field=ProductVersion|2.0
#AutoIt3Wrapper_Run_Au3check=n
#AutoIt3Wrapper_Run_Tidy=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
;===================================================================================================
; INRadio-Localtuner by JuraX
;===================================================================================================_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]
Global Const $WM_DROPFILESplay = 0x0233
Global Const $WM_DROPFILES = 0x0233
Global $gaDropFiles[1]
Global $aItem[2]
Global $playing_state = -1
Global $MusicHandle
Global $titelnummer = 0
Global $progress_slider, $slots, $hwnd
Global $fftstruct = DllStructCreate("float[128]")
Global $song_length = _BASS_ChannelGetLength($MusicHandle, $BASS_POS_BYTE)
Global $tags
Global $ARRPLAY
$Width = 380
$Height = 650
Global $hwnd = GUICreate("INRadio-Localtuner", $Width, $Height, -1, -1, Default, $WS_EX_ACCEPTFILES)
$TITART = GUICtrlCreateLabel("", 130, 220, 500, 70)
$slots = GUICtrlCreateLabel(GUICtrlRead($progress_slider), 8, 8, 150, 17)
$Close = GUICtrlCreateButton("Close", 296, 160, 75, 25, 0)
$PlayPause = GUICtrlCreateButton("Play|Pause", 216, 160, 75, 25, 0)
$Stop = GUICtrlCreateButton("Stop", 136, 160, 75, 25, 0)
$newfile = GUICtrlCreateButton("Andere Datei", 36, 160, 75, 25, 0)
$progress_slider = GUICtrlCreateProgress(8, 32, 236, 20)
$ordner = GUICtrlCreateButton("Neue Bibliothek", 136, 330)
GUICtrlCreateLabel("Lautstärke", 8, 190, 80, 20)
$Volume_slider = GUICtrlCreateSlider(8, 250, 366, 80)
$hListView = GUICtrlCreateListView('Dateiname|Pfad', 10, 375, 350, 200)
GUICtrlSetLimit($progress_slider, 100)
GUICtrlSetData($Volume_slider, 100)
SoundSetWaveVolume(100)
$Playliste = GUICtrlCreateButton("Playliste abspielen", 20, 330)#Region StartUp
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]#Region OPT
[/autoit] [autoit][/autoit] [autoit]
Opt("TrayMenuMode", 1)
Opt("MouseCoordMode", 0)
#EndRegion OPT#Region Tray
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$uottray = TrayCreateItem("Anzeigen")
$totray = TrayCreateItem("Verstecken")
$deleate = TrayCreateItem("Schließen")
TraySetState()
#EndRegion Tray;Bass StartUp
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_BASS_STARTUP(@ScriptDir & "\BASS.dll")
_Bass_Tags_Startup("BassTags.dll")
_BASS_Init(0, -1, 44100, 0, "")If @error Then
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, "Error", "Sound konnte nicht Initialisiert werden!")
Exit
EndIf#Region Register
[/autoit] [autoit][/autoit] [autoit]
If IsDeclared("Musichandle") Then
AdlibRegister("tagout", 3000)
EndIf
AdlibRegister("Aktualisieren")
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUIRegisterMsg($WM_DROPFILES, 'WM_DROPFILES_FUNC')#EndRegion Register
[/autoit] [autoit][/autoit] [autoit]#EndRegion StartUp
[/autoit] [autoit][/autoit] [autoit]#Region GUI
[/autoit] [autoit][/autoit] [autoit]#Region BIB Füllen
[/autoit] [autoit][/autoit] [autoit]
$return = IniRead(@ScriptDir & "\INRadio.ini", "Load", "BIB", "")
If $return = "" Then
$return = 'C:\Users\' & @UserName & '\Desktop'
EndIf
$returnputin = _GetFilesFolder_Rekursiv($return, "mp3", 0)
For $i = 1 To $returnputin[0]
$dateiname = StringSplit($returnputin[$i], "\")
GUICtrlCreateListViewItem($dateiname[$dateiname[0]] & "|" & $returnputin[$i], $hListView)
Next
#EndRegion BIB Füllen$rightVol = GUICtrlCreateProgress(8, 88, 236, 17)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUICtrlSetLimit(-1, 100, 0)
GUICtrlCreateLabel("Right Channel Volume Level", 8, 112, 150, 17)
$LeftVol = GUICtrlCreateProgress(8, 136, 236, 17)
GUICtrlSetLimit(-1, 100, 0)
GUICtrlCreateLabel("Left Channel Volume Level", 8, 64, 150, 17)GUISetState()
[/autoit] [autoit][/autoit] [autoit]
#EndRegion GUI#Region GDIstartup
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_SetColumnWidth($hListView, 0, $LVSCW_AUTOSIZE)
$iX = 120
$iY = 145
$graphics = _GDIPlus_GraphicsCreateFromHWND($hwnd)
$bitmap = _GDIPlus_BitmapCreateFromGraphics($iX, $iY, $graphics)
$backbuffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
_GDIPlus_GraphicsClear($backbuffer)
$pen1_size = 4
$pen1 = _GDIPlus_PenCreate(0, $pen1_size)
$pen2_size = 4
$pen2 = _GDIPlus_PenCreate(0, $pen2_size)
$pen3_size = 3
$pen3 = _GDIPlus_PenCreate(0, $pen3_size)$fall_speed_l_threshold = 0
[/autoit] [autoit][/autoit] [autoit]
$fall_speed_r_threshold = 0
$equalizer_width = 24
$max_l = 0
$max_r = 0
$fall_speed = 5
$fire_up = 15$fft_start = 7
[/autoit] [autoit][/autoit] [autoit]
$fft_end = 127
$fft_boost = 750
$dy = Int($iY / ($fft_end - $fft_start)) + $pen3_size
$dyy = Int($iY / $dy / 2)
$eq = 1
Dim $mpos[2]
#EndRegion GDIstartup#Region Loop
[/autoit] [autoit][/autoit] [autoit]While (True)
[/autoit] [autoit][/autoit] [autoit]
$selectcode = _GUICtrlListView_GetSelectedCount($hListView)
If _IsPressed("2E") Then
_GUICtrlListView_DeleteItemsSelected($hListView)
EndIf
_GUICtrlListView_SetColumnWidth($hListView, 1, 0)
$soundoff = _SoundGetWaveVolume()
GUICtrlSetData($Volume_slider, $soundoff)
If $playing_state = 1 Then
$song_length = _BASS_ChannelGetLength($MusicHandle, $BASS_POS_BYTE)
$current = _BASS_ChannelGetPosition($MusicHandle, $BASS_POS_BYTE)
$percent = Round(($current / $song_length) * 100, 0)
ConsoleWrite("MH: " & $MusicHandle & " Current: " & $current & " song_length: " & $song_length & @CRLF)
GUICtrlSetData($progress_slider, $percent)
$levels = _BASS_ChannelGetLevel($MusicHandle)
$rightChLvl = _LoWord($levels)
$rightChLvlper = Round(($rightChLvl / 32768) * 100, 0)
$LeftChLvl = _HiWord($levels)
$leftChLvlper = Round(($LeftChLvl / 32768) * 100, 0)
If IsArray($ARRPLAY) Then
If $current = $song_length Then
GUICtrlSetData($progress_slider, 0)
If $playing_state = 1 Then
_BASS_ChannelStop($MusicHandle)
EndIf
$titelnummer += 1
If $titelnummer = UBound($ARRPLAY) - 1 Then $titelnummer = 0
; Sleep (50)
$playing_state = 1
$MusicHandle = _BASS_StreamCreateFile(False, $ARRPLAY[$titelnummer][1], 0, 0, 0)
_BASS_ChannelPlay($MusicHandle, 0)
EndIf
EndIf
Else
$rightChLvlper = 0
$leftChLvlper = 0
EndIf
GUICtrlSetData($rightVol, $rightChLvlper)
GUICtrlSetData($LeftVol, $leftChLvlper)
Display_Vis($eq)$Msg = GUIGetMsg()
[/autoit] [autoit][/autoit] [autoit]
$tmsg = TrayGetMsg()
Switch $tmsgCase $uottray
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW)
Case $totray
GUISetState(@SW_HIDE)
Case $deleate
EXITF()
EndSwitch
Switch $MsgCase $Close, $GUI_EVENT_CLOSE
[/autoit] [autoit][/autoit] [autoit]
EXITF()
Case $PlayPause
If $playing_state = 1 Then
_Bass_ChannelPause($MusicHandle)
$playing_state = 2
ElseIf $playing_state = 2 Then
_BASS_ChannelPlay($MusicHandle, 0)
$playing_state = 1
EndIf
Case $Stop
If $playing_state = 1 Then
_BASS_ChannelStop($MusicHandle)
$playing_state = -1
EndIf
$ARRPLAY = 0
Sleep(50)
Case $newfile
If $playing_state = 1 Then
_BASS_ChannelStop($MusicHandle)
EndIf
$ARRPLAY = 0
Sleep(50)
$file = FileOpenDialog("Open...", "", "MP3 Files (*.mp3)")
$MusicHandle = _BASS_StreamCreateFile(False, $file, 0, 0, 0)
_BASS_ChannelPlay($MusicHandle, 0)
$playing_state = 1
Case $Volume_slider
SoundSetWaveVolume(GUICtrlRead($Volume_slider))
Case $ordner
$var = FileSelectFolder("Ordner wählen", "")
IniWrite(@ScriptDir & "\INRadio.ini", "Load", "BIB", $var)
$returnputin = _GetFilesFolder_Rekursiv($var, "mp3", 0)
For $i = 1 To $returnputin[0]
$dateiname = StringSplit($returnputin[$i], "\")
GUICtrlCreateListViewItem($dateiname[$dateiname[0]] & "|" & $returnputin[$i], $hListView)
Next
Case $Playliste
If $playing_state = 1 Then
_BASS_ChannelStop($MusicHandle)
EndIf
$Read = GUICtrlRead($hListView)
If $Read = "" Then
$ARRPLAY = _ListViewToArray($hListView)
$playing_state = 1
$MusicHandle = _BASS_StreamCreateFile(False, $ARRPLAY[$titelnummer][1], 0, 0, 0)
_BASS_ChannelPlay($MusicHandle, 0)
Else
$Read -= 15
Local $sString = ""
For $i = $Read To _GUICtrlListView_GetItemCount($hListView) - 1
$sString &= _GUICtrlListView_GetItemTextString($hListView, $i)
$sString &= ";"
Next
$aSplit = StringSplit(StringTrimRight($sString, 1), ";", 2)
$iUB1 = UBound($aSplit)
Dim $anext[$iUB1][1]
For $i = 0 To $iUB1 - 1
$aSplit2 = StringSplit($aSplit[$i], "|", 2)
$iUB2 = UBound($aSplit2)
If $iUB2 > UBound($anext, 2) Then ReDim $anext[$iUB1][$iUB2]
For $j = 0 To $iUB2 - 1
$anext[$i][$j] = $aSplit2[$j]
Next
Next
$ARRPLAY = $anext
$playing_state = 1
$MusicHandle = _BASS_StreamCreateFile(False, $anext[$titelnummer][1], 0, 0, 0)
_BASS_ChannelPlay($MusicHandle, 0)
EndIf
Case $GUI_EVENT_DROPPED
For $i = 0 To UBound($gaDropFiles) - 1
GUICtrlCreateListViewItem(StringRegExpReplace($gaDropFiles[$i], '.*\\(.*)\..*', '$1'), $hListView)
_GUICtrlListView_SetColumnWidth($hListView, 0, $LVSCW_AUTOSIZE)
Next
Case $GUI_EVENT_PRIMARYDOWN
_MoveListViewItem()
EndSwitchWEnd
[/autoit] [autoit][/autoit] [autoit]#EndRegion Loop
[/autoit] [autoit][/autoit] [autoit]
$mpos = MouseGetPos()
If $mpos[0] >= $Width - $iX - 10 And $mpos[0] <= $Width - 10 And $mpos[1] > 8 And $mpos[1] <= $iY + 8 And _IsPressed("01", "user32.dll") And WinActive($hwnd) Then
$eq *= -1
EndIf
#Region Func'sFunc WM_DROPFILES_FUNC($hwnd, $msgID, $wParam, $lParam) ; diese Funktion wird benötigt, damit man auch mehrere Dateien droppen kann
[/autoit] [autoit][/autoit] [autoit]
Local $nSize, $pFileName
Local $nAmt = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', 0xFFFFFFFF, 'ptr', 0, 'int', 255)
For $i = 0 To $nAmt[0]
$nSize = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', 0, 'int', 0)
$nSize = $nSize[0] + 1
$pFileName = DllStructCreate('wchar[' & $nSize & ']')
DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', DllStructGetPtr($pFileName), 'int', $nSize)
$filename = DllStructGetData($pFileName, 1) ;Dateinamen holen
ConsoleWrite($filename & @CRLF)
ReDim $gaDropFiles[$i + 1]
$gaDropFiles[$i] = DllStructGetData($pFileName, 1)
$pFileName = 0
Next
;_ArrayDisplay($gaDropFiles)
For $i = 0 To UBound($gaDropFiles) - 2 ;kommt derzeit immer noch ein leerer Eintrag am schluss
GUICtrlCreateListViewItem(StringRegExpReplace($gaDropFiles[$i], '.*\\(.*)\..*', '$1') & "|" & $gaDropFiles[$i], $hListView)
Next
_GUICtrlListView_SetColumnWidth($hListView, 0, $LVSCW_AUTOSIZE) ;erst wenn alle eigefügt sind
EndFunc ;==>WM_DROPFILES_FUNCFunc Aktualisieren()
[/autoit] [autoit][/autoit] [autoit]
$Sliderstatus = GUICtrlRead($progress_slider)
GUICtrlSetData($slots, $Sliderstatus)
EndFunc ;==>AktualisierenFunc WM_NOTIFY($hwnd, $msgID, $wParam, $lParam);Für Doppelcklick Erkennung
[/autoit] [autoit][/autoit] [autoit]
Local $tagNMHDR, $event, $hwndFrom, $code
$tagNMHDR = DllStructCreate("int;int;int", $lParam)
If @error Then Return 0
$code = DllStructGetData($tagNMHDR, 3)
If $wParam = $hListView And $code = -3 And _GUICtrlListView_GetSelectedCount($hListView) > 0 Then
For $i = 0 To _GUICtrlListView_GetItemCount($hListView)
If _GUICtrlListView_GetItemSelected($hListView, $i) Then
$aItem = _GUICtrlListView_GetItemTextArray($hListView, $i)
;~ In aItem[1] steht der Dateiname und in $aItem[2] der Pfad zincl. Dateinamen
_LeftDblClick()
EndIf
Next
EndIf
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFYFunc _LeftDblClick()
[/autoit] [autoit][/autoit] [autoit]
If $playing_state = 1 Then
_BASS_ChannelStop($MusicHandle)
EndIf
$titelnummer = -1
$file = $aItem[2]
$MusicHandle = _BASS_StreamCreateFile(False, $file, 0, 0, 0)
_BASS_ChannelPlay($MusicHandle, 0)
$playing_state = 1
EndFunc ;==>_LeftDblClickFunc Display_Vis($eq = 1)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsClear($backbuffer, 0x80F0F0F0)
If $eq > 0 Then
$levels = _BASS_ChannelGetLevel($MusicHandle)
$LeftChLvl = $leftChLvlper ;Round(_HiWord($levels) / $iY, 0)
$rightChLvl = $rightChLvlper ;Round(_LoWord($levels) / $iY, 0)If $max_l <= $LeftChLvl Then ;fire up higest line
[/autoit] [autoit][/autoit] [autoit]
$max_l = $LeftChLvl + $fire_up
$fall_speed_l_threshold = 20
Else
If $fall_speed_l_threshold <= 0 Then ;increase fall speed of highest line faster until threshold is <= 0 (second fall part)
If $max_l > $LeftChLvl + $pen2_size * 2 Then $max_l -= $fall_speed
Else
$fall_speed_l_threshold -= 1 ;increase fall speed of highest line by slower until threshold is <= 0 (first fall part)
If $max_l > $LeftChLvl + $pen2_size * 2 Then $max_l -= $fall_speed / 3
EndIf
EndIfIf $max_r <= $rightChLvl Then
[/autoit] [autoit][/autoit] [autoit]
$max_r = $rightChLvl + $fire_up
$fall_speed_r_threshold = 20
Else
If $fall_speed_r_threshold <= 0 Then
If $max_r > $rightChLvl + $pen2_size * 2 Then $max_r -= $fall_speed
Else
$fall_speed_r_threshold -= 1
If $max_r > $rightChLvl + $pen2_size * 2 Then $max_r -= $fall_speed / 3
EndIf
EndIf
_BASS_ChannelGetData($MusicHandle, DllStructGetPtr($fftstruct), $BASS_DATA_FFT256)
For $i = $fft_start To $fft_end Step $dy
$fft = Round(DllStructGetData($fftstruct, 1, $i + 1) * $fft_boost)
$r = (-(Cos(1.7 * $fft / 256) + 1) * 0.5) * 256
$g = ((Cos(4 * $fft / 256) + 1) * 0.5) * 256
$b = 0
_GDIPlus_PenSetColor($pen3, "0xFF" & Hex($r, 2) & Hex($g, 2) & Hex($b, 2))
_GDIPlus_GraphicsDrawLine($backbuffer, $iX / 5, $i + $dyy, $iX / 5 + $fft, $i + $dyy, $pen3)
Next
EndIf
_GDIPlus_GraphicsDrawImageRect($graphics, $bitmap, $Width - $iX - 10, 8, $iX, $iY)
EndFunc ;==>Display_VisFunc _SoundGetWaveVolume()
[/autoit] [autoit][/autoit] [autoit]
Local $WaveVol = -1, $p, $ret
Const $MMSYSERR_NOERROR = 0
$p = DllStructCreate("dword")
If @error Then
SetError(2)
Return -2
EndIf
$ret = DllCall("winmm.dll", "long", "waveOutGetVolume", "long", -1, "long", DllStructGetPtr($p))
If ($ret[0] == $MMSYSERR_NOERROR) Then
$WaveVol = Round(Dec(StringRight(Hex(DllStructGetData($p, 1), 8), 4)) / 0xFFFF * 100)
Else
SetError(1)
EndIf
$p = ""
Return $WaveVol
EndFunc ;==>_SoundGetWaveVolumeFunc EXITF()
[/autoit] [autoit][/autoit] [autoit]
_BASS_Stop()
_BASS_Free()
_GDIPlus_PenDispose($pen1)
_GDIPlus_PenDispose($pen2)
_GDIPlus_PenDispose($pen3)
_GDIPlus_BitmapDispose($bitmap)
_GDIPlus_GraphicsDispose($graphics)
_GDIPlus_GraphicsDispose($backbuffer)
_GDIPlus_Shutdown()
_GDIPlus_Shutdown()
$fftstruct = 0
ProcessClose("Radiotuner.exe")
AdlibUnRegister("Aktualisieren")
Exit
EndFunc ;==>EXITFFunc _ListViewToArray($hListView)
[/autoit] [autoit][/autoit] [autoit]
If Not IsHWnd($hListView) Then $hListView = GUICtrlGetHandle($hListView)
Local $sString = ""
For $i = 0 To _GUICtrlListView_GetItemCount($hListView) - 1
$sString &= _GUICtrlListView_GetItemTextString($hListView, $i)
$sString &= ";"
Next
$aSplit = StringSplit(StringTrimRight($sString, 1), ";", 2)
$iUB1 = UBound($aSplit)
Dim $aRet[$iUB1][1]
For $i = 0 To $iUB1 - 1
$aSplit2 = StringSplit($aSplit[$i], "|", 2)
$iUB2 = UBound($aSplit2)
If $iUB2 > UBound($aRet, 2) Then ReDim $aRet[$iUB1][$iUB2]
For $j = 0 To $iUB2 - 1
$aRet[$i][$j] = $aSplit2[$j]
Next
Next
Return $aRet
EndFunc ;==>_ListViewToArrayFunc TAGOUT()
[/autoit] [autoit][/autoit] [autoit]
$tags = _Bass_Tags_Read($MusicHandle, "%TITL" & "-" & "%ARTI")
If $tags = "" & "-" & "" Then
GUICtrlSetData($TITART, "Konnte ID3-Tags nicht Lesen!")
Else
GUICtrlSetData($TITART, $tags)
EndIf
EndFunc ;==>TAGOUTFunc _MoveListViewItem()
[/autoit] [autoit][/autoit] [autoit]
Local $von, $bis, $down = GUIGetCursorInfo($hwnd)If $down[4] = $hListView Then
[/autoit] [autoit][/autoit] [autoit]
$von = _GUICtrlListView_GetHotItem($hListView)While $down[2]
[/autoit] [autoit][/autoit] [autoit]
$down = GUIGetCursorInfo($hwnd)
Sleep(50)
WEndIf $down[4] = $hListView Then
[/autoit] [autoit][/autoit] [autoit]
$bis = _GUICtrlListView_GetHotItem($hListView)If Not ($von = $bis) Then
[/autoit] [autoit][/autoit] [autoit]
_MoveLVItem($von, $bis - $von, $hListView)
_GUICtrlListView_SetItemState($hListView, $bis, 1, 1)
EndIf
EndIf
EndIf
EndFunc ;==>_MoveListViewItemFunc _MoveLVItem($ItemIndex, $StepWidth, $hLV)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
If ($ItemIndex + $StepWidth) < 0 Or _
($ItemIndex + $StepWidth) > _GUICtrlListView_GetItemCount($hLV) - 1 Then
SetError(1)
Return 0
EndIf
Local $txt2skip = _GUICtrlListView_GetItemText($hLV, $ItemIndex)If $StepWidth > 0 Then
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_InsertItem($ItemIndex + $StepWidth + 1, $txt2skip, $hLV)
_GUICtrlListView_DeleteItem($hLV, $ItemIndex)
Else
_GUICtrlListView_InsertItem($ItemIndex + $StepWidth, $txt2skip, $hLV)
_GUICtrlListView_DeleteItem($hLV, $ItemIndex + 1)
EndIfReturn -1
[/autoit]
EndFunc ;==>_MoveLVItem
#EndRegion Func's -
So irgendwie würde ich das machen.
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
Func _MoveLVItem($startIndex, $endindex, $hLV) ; $hLV = handle vom Listview!
If $endindex >_GUICtrlListView_GetItemCount($hLV)-1 or $endindex < 0 then
SetError(1)
Return 0
EndIf
If $startindex >_GUICtrlListView_GetItemCount($hLV)-1 or $startindex < 0 then
SetError(1)
Return 0
EndIf
;errormanagement braucht man vielleicht gar nicht.
;im Errorfall wird das Item ganz oben bzw. ganz unten eingefügt? Kanns nicht testen ...Local $gettext = _GUICtrlListView_GetItemText($hLV, $startindex)
[/autoit]
if $startindex < $endindex then
_GUICtrlListView_InsertItem($hLV, $gettext, $endindex +1)
_GUICtrlListView_DeleteItem($hLV, $startindex)
else
_GUICtrlListView_InsertItem($hLV, $gettext, $endindex)
_GUICtrlListView_DeleteItem($hLV, $startindex)
endif
EndFunc ;==>_MoveLVItem -
Hallo JuraX,
hier meine Version (Spalte für Pfad ist berücksichtigt):
Spoiler anzeigen
[autoit]#NoTrayIcon
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>
#include <Bass.au3>
#include <_GetFilesFolder_Rekursiv.au3>
#include <GuiListView.au3>
#include <Misc.au3>
#include <BassConstants.au3>
#include <WindowsConstants.au3>
#include <ListViewConstants.au3>
#include <GUIConstantsEx.au3>
#include <StructureConstants.au3>
#include <WinAPI.au3>
#include <GDIPlusConstants.au3>
#include <basstags.au3>
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=INRadio Entwicklungs-umgebung\INRadio.ico
#AutoIt3Wrapper_Outfile=Localtuner.exe
#AutoIt3Wrapper_Res_Fileversion=2.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=JuraX
#AutoIt3Wrapper_Res_Language=1031
#AutoIt3Wrapper_Res_Field=ProductVersion|2.0
#AutoIt3Wrapper_Run_Au3check=n
#AutoIt3Wrapper_Run_Tidy=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
;===================================================================================================
; INRadio-Localtuner by JuraX
;===================================================================================================_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]
Global Const $WM_DROPFILESplay = 0x0233
Global Const $WM_DROPFILES = 0x0233
Global $gaDropFiles[1]
Global $aItem[2]
Global $playing_state = -1
Global $MusicHandle
Global $titelnummer = 0
Global $progress_slider, $slots, $hwnd
Global $fftstruct = DllStructCreate("float[128]")
Global $song_length = _BASS_ChannelGetLength($MusicHandle, $BASS_POS_BYTE)
Global $tags
Global $ARRPLAY
$Width = 380
$Height = 650
Global $hwnd = GUICreate("INRadio-Localtuner", $Width, $Height, -1, -1, Default, $WS_EX_ACCEPTFILES)
$TITART = GUICtrlCreateLabel("", 130, 220, 500, 70)
$slots = GUICtrlCreateLabel(GUICtrlRead($progress_slider), 8, 8, 150, 17)
$Close = GUICtrlCreateButton("Close", 296, 160, 75, 25, 0)
$PlayPause = GUICtrlCreateButton("Play|Pause", 216, 160, 75, 25, 0)
$Stop = GUICtrlCreateButton("Stop", 136, 160, 75, 25, 0)
$newfile = GUICtrlCreateButton("Andere Datei", 36, 160, 75, 25, 0)
$progress_slider = GUICtrlCreateProgress(8, 32, 236, 20)
$ordner = GUICtrlCreateButton("Neue Bibliothek", 136, 330)
GUICtrlCreateLabel("Lautstärke", 8, 190, 80, 20)
$Volume_slider = GUICtrlCreateSlider(8, 250, 366, 80)
$hListView = GUICtrlCreateListView('Dateiname|Pfad', 10, 375, 350, 200)
GUICtrlSetLimit($progress_slider, 100)
GUICtrlSetData($Volume_slider, 100)
SoundSetWaveVolume(100)
$Playliste = GUICtrlCreateButton("Playliste abspielen", 20, 330)#Region StartUp
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]#Region OPT
[/autoit] [autoit][/autoit] [autoit]
Opt("TrayMenuMode", 1)
Opt("MouseCoordMode", 0)
#EndRegion OPT#Region Tray
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$uottray = TrayCreateItem("Anzeigen")
$totray = TrayCreateItem("Verstecken")
$deleate = TrayCreateItem("Schließen")
TraySetState()
#EndRegion Tray;Bass StartUp
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_BASS_STARTUP(@ScriptDir & "\BASS.dll")
_Bass_Tags_Startup("BassTags.dll")
_BASS_Init(0, -1, 44100, 0, "")If @error Then
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, "Error", "Sound konnte nicht Initialisiert werden!")
Exit
EndIf#Region Register
[/autoit] [autoit][/autoit] [autoit]
If IsDeclared("Musichandle") Then
AdlibRegister("tagout", 3000)
EndIf
AdlibRegister("Aktualisieren")
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUIRegisterMsg($WM_DROPFILES, 'WM_DROPFILES_FUNC')#EndRegion Register
[/autoit] [autoit][/autoit] [autoit]#EndRegion StartUp
[/autoit] [autoit][/autoit] [autoit]#Region GUI
[/autoit] [autoit][/autoit] [autoit]#Region BIB Füllen
[/autoit] [autoit][/autoit] [autoit]$return = IniRead(@ScriptDir & "\INRadio.ini", "Load", "BIB", "")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
If $return = "" Then
$return = 'C:\Users\' & @UserName & '\Desktop'
EndIf
$returnputin = _GetFilesFolder_Rekursiv($return, "mp3", 0)
For $i = 1 To $returnputin[0]
$dateiname = StringSplit($returnputin[$i], "\")
GUICtrlCreateListViewItem($dateiname[$dateiname[0]] & "|" & $returnputin[$i], $hListView)
Next
#EndRegion BIB Füllen$rightVol = GUICtrlCreateProgress(8, 88, 236, 17)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUICtrlSetLimit(-1, 100, 0)
GUICtrlCreateLabel("Right Channel Volume Level", 8, 112, 150, 17)
$LeftVol = GUICtrlCreateProgress(8, 136, 236, 17)
GUICtrlSetLimit(-1, 100, 0)
GUICtrlCreateLabel("Left Channel Volume Level", 8, 64, 150, 17)GUISetState()
[/autoit] [autoit][/autoit] [autoit]
#EndRegion GUI#Region GDIstartup
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_SetColumnWidth($hListView, 0, $LVSCW_AUTOSIZE)
$iX = 120
$iY = 145
$graphics = _GDIPlus_GraphicsCreateFromHWND($hwnd)
$bitmap = _GDIPlus_BitmapCreateFromGraphics($iX, $iY, $graphics)
$backbuffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
_GDIPlus_GraphicsClear($backbuffer)
$pen1_size = 4
$pen1 = _GDIPlus_PenCreate(0, $pen1_size)
$pen2_size = 4
$pen2 = _GDIPlus_PenCreate(0, $pen2_size)
$pen3_size = 3
$pen3 = _GDIPlus_PenCreate(0, $pen3_size)$fall_speed_l_threshold = 0
[/autoit] [autoit][/autoit] [autoit]
$fall_speed_r_threshold = 0
$equalizer_width = 24
$max_l = 0
$max_r = 0
$fall_speed = 5
$fire_up = 15$fft_start = 7
[/autoit] [autoit][/autoit] [autoit]
$fft_end = 127
$fft_boost = 750
$dy = Int($iY / ($fft_end - $fft_start)) + $pen3_size
$dyy = Int($iY / $dy / 2)
$eq = 1
Dim $mpos[2]
#EndRegion GDIstartup#Region Loop
[/autoit] [autoit][/autoit] [autoit]While (True)
[/autoit] [autoit][/autoit] [autoit]
$selectcode = _GUICtrlListView_GetSelectedCount($hListView)
If _IsPressed("2E") Then
_GUICtrlListView_DeleteItemsSelected($hListView)
EndIf
_GUICtrlListView_SetColumnWidth($hListView, 1, 0)
$soundoff = _SoundGetWaveVolume()
GUICtrlSetData($Volume_slider, $soundoff)
If $playing_state = 1 Then
$song_length = _BASS_ChannelGetLength($MusicHandle, $BASS_POS_BYTE)
$current = _BASS_ChannelGetPosition($MusicHandle, $BASS_POS_BYTE)
$percent = Round(($current / $song_length) * 100, 0)
ConsoleWrite("MH: " & $MusicHandle & " Current: " & $current & " song_length: " & $song_length & @CRLF)
GUICtrlSetData($progress_slider, $percent)
$levels = _BASS_ChannelGetLevel($MusicHandle)
$rightChLvl = _LoWord($levels)
$rightChLvlper = Round(($rightChLvl / 32768) * 100, 0)
$LeftChLvl = _HiWord($levels)
$leftChLvlper = Round(($LeftChLvl / 32768) * 100, 0)
If IsArray($ARRPLAY) Then
If $current = $song_length Then
GUICtrlSetData($progress_slider, 0)
If $playing_state = 1 Then
_BASS_ChannelStop($MusicHandle)
EndIf
$titelnummer += 1
If $titelnummer = UBound($ARRPLAY) - 1 Then $titelnummer = 0
; Sleep (50)
$playing_state = 1
$MusicHandle = _BASS_StreamCreateFile(False, $ARRPLAY[$titelnummer][1], 0, 0, 0)
_BASS_ChannelPlay($MusicHandle, 0)
EndIf
EndIf
Else
$rightChLvlper = 0
$leftChLvlper = 0
EndIf
GUICtrlSetData($rightVol, $rightChLvlper)
GUICtrlSetData($LeftVol, $leftChLvlper)
Display_Vis($eq)$Msg = GUIGetMsg()
[/autoit] [autoit][/autoit] [autoit]
$tmsg = TrayGetMsg()
Switch $tmsgCase $uottray
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW)
Case $totray
GUISetState(@SW_HIDE)
Case $deleate
EXITF()
EndSwitch
Switch $MsgCase $Close, $GUI_EVENT_CLOSE
[/autoit] [autoit][/autoit] [autoit]
EXITF()
Case $PlayPause
If $playing_state = 1 Then
_Bass_ChannelPause($MusicHandle)
$playing_state = 2
ElseIf $playing_state = 2 Then
_BASS_ChannelPlay($MusicHandle, 0)
$playing_state = 1
EndIf
Case $Stop
If $playing_state = 1 Then
_BASS_ChannelStop($MusicHandle)
$playing_state = -1
EndIf
$ARRPLAY = 0
Sleep(50)
Case $newfile
If $playing_state = 1 Then
_BASS_ChannelStop($MusicHandle)
EndIf
$ARRPLAY = 0
Sleep(50)
$file = FileOpenDialog("Open...", "", "MP3 Files (*.mp3)")
$MusicHandle = _BASS_StreamCreateFile(False, $file, 0, 0, 0)
_BASS_ChannelPlay($MusicHandle, 0)
$playing_state = 1
Case $Volume_slider
SoundSetWaveVolume(GUICtrlRead($Volume_slider))
Case $ordner
$var = FileSelectFolder("Ordner wählen", "")
IniWrite(@ScriptDir & "\INRadio.ini", "Load", "BIB", $var)
$returnputin = _GetFilesFolder_Rekursiv($var, "mp3", 0)
For $i = 1 To $returnputin[0]
$dateiname = StringSplit($returnputin[$i], "\")
GUICtrlCreateListViewItem($dateiname[$dateiname[0]] & "|" & $returnputin[$i], $hListView)
Next
Case $Playliste
If $playing_state = 1 Then
_BASS_ChannelStop($MusicHandle)
EndIf
$Read = GUICtrlRead($hListView)
If $Read = "" Then
$ARRPLAY = _ListViewToArray($hListView)
$playing_state = 1
$MusicHandle = _BASS_StreamCreateFile(False, $ARRPLAY[$titelnummer][1], 0, 0, 0)
_BASS_ChannelPlay($MusicHandle, 0)
Else
$Read -= 15
Local $sString = ""
For $i = $Read To _GUICtrlListView_GetItemCount($hListView) - 1
$sString &= _GUICtrlListView_GetItemTextString($hListView, $i)
$sString &= ";"
Next
$aSplit = StringSplit(StringTrimRight($sString, 1), ";", 2)
$iUB1 = UBound($aSplit)
Dim $anext[$iUB1][1]
For $i = 0 To $iUB1 - 1
$aSplit2 = StringSplit($aSplit[$i], "|", 2)
$iUB2 = UBound($aSplit2)
If $iUB2 > UBound($anext, 2) Then ReDim $anext[$iUB1][$iUB2]
For $j = 0 To $iUB2 - 1
$anext[$i][$j] = $aSplit2[$j]
Next
Next
$ARRPLAY = $anext
$playing_state = 1
$MusicHandle = _BASS_StreamCreateFile(False, $anext[$titelnummer][1], 0, 0, 0)
_BASS_ChannelPlay($MusicHandle, 0)
EndIf
Case $GUI_EVENT_DROPPED
For $i = 0 To UBound($gaDropFiles) - 1
GUICtrlCreateListViewItem(StringRegExpReplace($gaDropFiles[$i], '.*\\(.*)\..*', '$1'), $hListView)
_GUICtrlListView_SetColumnWidth($hListView, 0, $LVSCW_AUTOSIZE)
Next
Case $GUI_EVENT_PRIMARYDOWN
_MoveListViewItem()
EndSwitchWEnd
[/autoit] [autoit][/autoit] [autoit]#EndRegion Loop
[/autoit] [autoit][/autoit] [autoit]
$mpos = MouseGetPos()
If $mpos[0] >= $Width - $iX - 10 And $mpos[0] <= $Width - 10 And $mpos[1] > 8 And $mpos[1] <= $iY + 8 And _IsPressed("01", "user32.dll") And WinActive($hwnd) Then
$eq *= -1
EndIf
#Region Func'sFunc WM_DROPFILES_FUNC($hwnd, $msgID, $wParam, $lParam) ; diese Funktion wird benötigt, damit man auch mehrere Dateien droppen kann
[/autoit] [autoit][/autoit] [autoit]
Local $nSize, $pFileName
Local $nAmt = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', 0xFFFFFFFF, 'ptr', 0, 'int', 255)
For $i = 0 To $nAmt[0]
$nSize = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', 0, 'int', 0)
$nSize = $nSize[0] + 1
$pFileName = DllStructCreate('wchar[' & $nSize & ']')
DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', DllStructGetPtr($pFileName), 'int', $nSize)
$filename = DllStructGetData($pFileName, 1) ;Dateinamen holen
ConsoleWrite($filename & @CRLF)
ReDim $gaDropFiles[$i + 1]
$gaDropFiles[$i] = DllStructGetData($pFileName, 1)
$pFileName = 0
Next
;_ArrayDisplay($gaDropFiles)
For $i = 0 To UBound($gaDropFiles) - 2 ;kommt derzeit immer noch ein leerer Eintrag am schluss
GUICtrlCreateListViewItem(StringRegExpReplace($gaDropFiles[$i], '.*\\(.*)\..*', '$1') & "|" & $gaDropFiles[$i], $hListView)
Next
_GUICtrlListView_SetColumnWidth($hListView, 0, $LVSCW_AUTOSIZE) ;erst wenn alle eigefügt sind
EndFunc ;==>WM_DROPFILES_FUNCFunc Aktualisieren()
[/autoit] [autoit][/autoit] [autoit]
$Sliderstatus = GUICtrlRead($progress_slider)
GUICtrlSetData($slots, $Sliderstatus)
EndFunc ;==>AktualisierenFunc WM_NOTIFY($hwnd, $msgID, $wParam, $lParam);Für Doppelcklick Erkennung
[/autoit] [autoit][/autoit] [autoit]
Local $tagNMHDR, $event, $hwndFrom, $code
$tagNMHDR = DllStructCreate("int;int;int", $lParam)
If @error Then Return 0
$code = DllStructGetData($tagNMHDR, 3)
If $wParam = $hListView And $code = -3 And _GUICtrlListView_GetSelectedCount($hListView) > 0 Then
For $i = 0 To _GUICtrlListView_GetItemCount($hListView)
If _GUICtrlListView_GetItemSelected($hListView, $i) Then
$aItem = _GUICtrlListView_GetItemTextArray($hListView, $i)
;~ In aItem[1] steht der Dateiname und in $aItem[2] der Pfad zincl. Dateinamen
_LeftDblClick()
EndIf
Next
EndIf
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFYFunc _LeftDblClick()
[/autoit] [autoit][/autoit] [autoit]
If $playing_state = 1 Then
_BASS_ChannelStop($MusicHandle)
EndIf
$titelnummer = -1
$file = $aItem[2]
$MusicHandle = _BASS_StreamCreateFile(False, $file, 0, 0, 0)
_BASS_ChannelPlay($MusicHandle, 0)
$playing_state = 1
EndFunc ;==>_LeftDblClickFunc Display_Vis($eq = 1)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsClear($backbuffer, 0x80F0F0F0)
If $eq > 0 Then
$levels = _BASS_ChannelGetLevel($MusicHandle)
$LeftChLvl = $leftChLvlper ;Round(_HiWord($levels) / $iY, 0)
$rightChLvl = $rightChLvlper ;Round(_LoWord($levels) / $iY, 0)If $max_l <= $LeftChLvl Then ;fire up higest line
[/autoit] [autoit][/autoit] [autoit]
$max_l = $LeftChLvl + $fire_up
$fall_speed_l_threshold = 20
Else
If $fall_speed_l_threshold <= 0 Then ;increase fall speed of highest line faster until threshold is <= 0 (second fall part)
If $max_l > $LeftChLvl + $pen2_size * 2 Then $max_l -= $fall_speed
Else
$fall_speed_l_threshold -= 1 ;increase fall speed of highest line by slower until threshold is <= 0 (first fall part)
If $max_l > $LeftChLvl + $pen2_size * 2 Then $max_l -= $fall_speed / 3
EndIf
EndIfIf $max_r <= $rightChLvl Then
[/autoit] [autoit][/autoit] [autoit]
$max_r = $rightChLvl + $fire_up
$fall_speed_r_threshold = 20
Else
If $fall_speed_r_threshold <= 0 Then
If $max_r > $rightChLvl + $pen2_size * 2 Then $max_r -= $fall_speed
Else
$fall_speed_r_threshold -= 1
If $max_r > $rightChLvl + $pen2_size * 2 Then $max_r -= $fall_speed / 3
EndIf
EndIf
_BASS_ChannelGetData($MusicHandle, DllStructGetPtr($fftstruct), $BASS_DATA_FFT256)
For $i = $fft_start To $fft_end Step $dy
$fft = Round(DllStructGetData($fftstruct, 1, $i + 1) * $fft_boost)
$r = (-(Cos(1.7 * $fft / 256) + 1) * 0.5) * 256
$g = ((Cos(4 * $fft / 256) + 1) * 0.5) * 256
$b = 0
_GDIPlus_PenSetColor($pen3, "0xFF" & Hex($r, 2) & Hex($g, 2) & Hex($b, 2))
_GDIPlus_GraphicsDrawLine($backbuffer, $iX / 5, $i + $dyy, $iX / 5 + $fft, $i + $dyy, $pen3)
Next
EndIf
_GDIPlus_GraphicsDrawImageRect($graphics, $bitmap, $Width - $iX - 10, 8, $iX, $iY)
EndFunc ;==>Display_VisFunc _SoundGetWaveVolume()
[/autoit] [autoit][/autoit] [autoit]
Local $WaveVol = -1, $p, $ret
Const $MMSYSERR_NOERROR = 0
$p = DllStructCreate("dword")
If @error Then
SetError(2)
Return -2
EndIf
$ret = DllCall("winmm.dll", "long", "waveOutGetVolume", "long", -1, "long", DllStructGetPtr($p))
If ($ret[0] == $MMSYSERR_NOERROR) Then
$WaveVol = Round(Dec(StringRight(Hex(DllStructGetData($p, 1), 8), 4)) / 0xFFFF * 100)
Else
SetError(1)
EndIf
$p = ""
Return $WaveVol
EndFunc ;==>_SoundGetWaveVolumeFunc EXITF()
[/autoit] [autoit][/autoit] [autoit]
_BASS_Stop()
_BASS_Free()
_GDIPlus_PenDispose($pen1)
_GDIPlus_PenDispose($pen2)
_GDIPlus_PenDispose($pen3)
_GDIPlus_BitmapDispose($bitmap)
_GDIPlus_GraphicsDispose($graphics)
_GDIPlus_GraphicsDispose($backbuffer)
_GDIPlus_Shutdown()
_GDIPlus_Shutdown()
$fftstruct = 0
ProcessClose("Radiotuner.exe")
AdlibUnRegister("Aktualisieren")
Exit
EndFunc ;==>EXITFFunc _ListViewToArray($hListView)
[/autoit] [autoit][/autoit] [autoit]
If Not IsHWnd($hListView) Then $hListView = GUICtrlGetHandle($hListView)
Local $sString = ""
For $i = 0 To _GUICtrlListView_GetItemCount($hListView) - 1
$sString &= _GUICtrlListView_GetItemTextString($hListView, $i)
$sString &= ";"
Next
$aSplit = StringSplit(StringTrimRight($sString, 1), ";", 2)
$iUB1 = UBound($aSplit)
Dim $aRet[$iUB1][1]
For $i = 0 To $iUB1 - 1
$aSplit2 = StringSplit($aSplit[$i], "|", 2)
$iUB2 = UBound($aSplit2)
If $iUB2 > UBound($aRet, 2) Then ReDim $aRet[$iUB1][$iUB2]
For $j = 0 To $iUB2 - 1
$aRet[$i][$j] = $aSplit2[$j]
Next
Next
Return $aRet
EndFunc ;==>_ListViewToArrayFunc TAGOUT()
[/autoit] [autoit][/autoit] [autoit]
$tags = _Bass_Tags_Read($MusicHandle, "%TITL" & "-" & "%ARTI")
If $tags = "" & "-" & "" Then
GUICtrlSetData($TITART, "Konnte ID3-Tags nicht Lesen!")
Else
GUICtrlSetData($TITART, $tags)
EndIf
EndFunc ;==>TAGOUTFunc _MoveListViewItem()
[/autoit] [autoit][/autoit] [autoit]
Local $von, $bis, $down = GUIGetCursorInfo($hwnd)If $down[4] = $hListView Then
[/autoit] [autoit][/autoit] [autoit]
$von = _GUICtrlListView_GetHotItem($hListView)While $down[2]
[/autoit] [autoit][/autoit] [autoit]
$down = GUIGetCursorInfo($hwnd)
Sleep(50)
WEndIf $down[4] = $hListView Then
[/autoit] [autoit][/autoit] [autoit]
$bis = _GUICtrlListView_GetHotItem($hListView)If Not ($von = $bis) Then
[/autoit] [autoit][/autoit] [autoit]
_MoveLVItem($von, $bis - $von, $hListView)
_GUICtrlListView_SetItemState($hListView, $bis, 1, 1)
EndIf
EndIf
EndIf
EndFunc ;==>_MoveListViewItem;----------------------------------------------------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]
; Funktion _MoveLVItem($ItemIndex, $StepWidth, $hLV)
;
; Beschreibung verschiebt per Index angegebenen Eintrag eines ListViewCtrl um eine Anzahl Positionen
;
; Parameter $ItemIndex: Index der Zeile
; $StepWidth: Anzahl Zeilen um die der Eintrag verschoben wird (negative Zahl - aufwärts)
; $hLV: ListView ID
;
; Erfordernisse #include <GuiListView.au3>
;
; Autor BugFix ([email='bugfix@autoit.de'][/email])
;----------------------------------------------------------------------------------------------------------------------Func _MoveLVItem($ItemIndex, $StepWidth, $hLV)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
If ($ItemIndex + $StepWidth) < 0 Or _
($ItemIndex + $StepWidth) > _GUICtrlListView_GetItemCount($hLV) - 1 Then
SetError(1)
Return 0
EndIf
Local $askip = _GUICtrlListView_GetItemTextArray($hLV, $ItemIndex)If $StepWidth > 0 Then
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_InsertItem($hLV, $askip[1], $ItemIndex + $StepWidth + 1)
_GUICtrlListView_SetItemText($hLV, $ItemIndex + $StepWidth + 1, $askip[2], 1)
_GUICtrlListView_DeleteItem($hLV, $ItemIndex)
Else
_GUICtrlListView_InsertItem($hLV, $askip[1], $ItemIndex + $StepWidth)
_GUICtrlListView_SetItemText($hLV, $ItemIndex + $StepWidth, $askip[2], 1)
_GUICtrlListView_DeleteItem($hLV, $ItemIndex + 1)
EndIfReturn -1
[/autoit]
EndFunc ;==>_MoveLVItem
#EndRegion Func'snach unten klappt leider nur ca. 80% bei mir,
mfg (Auto)Bert
-
ok danke
(wenn noch jmd ne verbesserungsidee hat bitte posten!)
Snst Super!