Hy,
ich hab mir ein kleines Script geschrieben das ein paar Daten kopiert und dachte mir, dass ich die bereits übertragenen Prozent oder auch MB anzeigen lasse.
Folgendes hab ich zusammengebastelt:
[autoit]
$copyperc = GUICtrlCreateLabel("",50,482)
While 1
$msg = GUIGetMsg()
Select
Case $msg = $exit
ExitLoop
Case $msg = $target
$targetfolder = FileSelectFolder("Zielordner:", "", 1)
GUICtrlSetData($pathlabel,$targetfolder)
_WinAPI_CopyFileEx('U:\Video\dvd1.mdf', 'D:\dvd1.mdf', DllCallBackGetPtr($hProgressRoutine), $COPY_FILE_FAIL_IF_EXISTS)
MsgBox(0, 'CopyFileEx', _WinAPI_GetLastErrorMessage())
DllCallbackFree($hProgressRoutine)
EndSelect
WEnd
Func _Progress($iTotalFileSize, $iTotalBytesTransferred, $iStreamSize, $iStreamBytesTransferred, $iStreamNumber, $iCallbackReason, $hSourceFile, $hDestinationFile, $iData)
GUICtrlSetData($copyperc,Round(($iTotalBytesTransferred / $iTotalFileSize * 100), 1) & '%')
;Sleep(10)
If _IsPressed('1B') Then
Return $PROGRESS_CANCEL
Else
Return $PROGRESS_CONTINUE
EndIf
EndFunc
Das ist nur der Ausschnitt dazu.
Nun habe ich folgendes Probelm:
Mit einem Progress-Bar funktionierts einwandfrei. Wenn ich nun aber versuche ein Label zu erneuern dann schreibt er dies nicht neu, sondern setzt den Text einfach drüber, sodass man nichts mehr lesen kann. Wenn ich aber zum Abbrechen ESC drücke, erscheint die richtige Zahl.
Wenn mir das jemand erklären könnte, warum das so ist, wäre ich sehr dankber ![]()
MfG
Alex
edit: Ok ich habs rausgefunden. Es lag daran, dass ich den Hintergrund auf Transparent gesetzt hatte. Aber trotzdem bleibt ein Flimmern der anzeige wenn es etwas schneller geht, solange ich den Hintergrund auf die richtige Farbe setzte. Gibts da eine effektivere "Aktualierungsmethode" ?