![]() |
Scrollbar position ist falsch
Ich setze beim Start der Anwendung mit SetScrollRange den Maximalen Scroll wert.
Im Timer wird die Position gesetzt.
Code:
In WM_HSCROLL versuche ich die aktuelle Thumb Position in Erfahrung zu bringen.
SetScrollPos(hWnd, SBS_HORZ, (int)MilSecond, FALSE);
Ich frage mich nun warum wird diese falsch ausgegeben?
Code:
Die frage warum wird die falsche Position ausgegeben wenn ich den Thumb loslasse?
LRESULT CALLBACK MovieProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{ LONG64 Position = 0; switch (message) { case WM_HSCROLL: { switch LOWORD(wParam) { case SB_THUMBTRACK: { bIsTracking = TRUE; } break; case SB_ENDSCROLL: { bIsTracking = FALSE; } break; case SB_THUMBPOSITION: { Position = HIWORD(wParam); KVideo_SetStreamPosition(Position * 10000); } break; } } break; case WM_TIMER: { if (wParam = MOVIE_TIMER) { if (bIsTracking) { return 0; break; } if (TimerTick) { return 0; break; } if (aMediaProperty.PlaybackLength > 0) { MilSecond = KVideo_GetStreamPosition() / 10000; LONG64 Second = MilSecond / 1000; SetScrollPos(hWnd, SBS_HORZ, (int)MilSecond, FALSE); if (Second == LastPlayingPos) { TimerTick = FALSE; return 0; break; } else LastPlayingPos = Second; } } } break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } gruss |
AW: Scrollbar position ist falsch
Schau Dir mal Deine Case und Switch flows genauer an.......
Deine Breaks sind, ich sag mal suboptimal ;-) Wenn Du C++ Code schreibst must Du aufhören Delphi zu denken Gruss |
AW: Scrollbar position ist falsch
Zitat:
Und vor allem behebt das mein Problem mit der Scroll Position? OK ich denke kann diese aus
Code:
rauswerfen
if (wParam = MOVIE_TIMER)
und nur am ende von Case setzen.
Code:
gruss
case WM_TIMER:
{ if (wParam = MOVIE_TIMER) { if (bIsTracking) { return 0; } if (TimerTick) { return 0; } if (aMediaProperty.PlaybackLength > 0) { MilSecond = KVideo_GetStreamPosition() / 10000; LONG64 Second = MilSecond / 1000; SetScrollPos(hWnd, SBS_HORZ, (int)MilSecond, FALSE); if (Second == LastPlayingPos) { TimerTick = FALSE; return 0; } else LastPlayingPos = Second; } } } break; |
AW: Scrollbar position ist falsch
Code:
vielleicht nur ein Tipfehler - sollte es nicht == heißen?
if (wParam = MOVIE_TIMER)
{ if (bIsTracking) Grüße Klaus |
AW: Scrollbar position ist falsch
Zitat:
Bin mir da jetzt nicht sicher lerne den C++ Kram erst. Wo nun der Unterschied ist zwischen = und == muss ich erst noch ergründen ;) Der Compiler meldet keinen Fehler und im Timer spring ich auch rein beim Debugen gruss |
AW: Scrollbar position ist falsch
in C und C++ ist "=" ein Zuweisung enspricht in Pascal :=
== ist dann der Vergleich. Grüße Klaus |
AW: Scrollbar position ist falsch
Zitat:
c++ "==" delphi "=" Und der compiler meckert nicht weil es gültiger Code ist In C++ sind halt viele Sachen erlaubt die in Delphi nicht gehen. Dein if (wParam = MOVIE_TIMER) macht eine Zuweisung an wParam und überprüft ob das Ergebnis <> 0 ist....... Obwohl rot doch abgeschickt:-D ![]() Die Seite ist gar nicht schlecht |
AW: Scrollbar position ist falsch
Danke ;)
Jo dann muss ich das noch korrigieren. Wobei das aber nicht mein Problem mit der Scroll Position löst. :) gruss |
AW: Scrollbar position ist falsch
Habe mal die *.cpp angehängt falls es jemand testen möchte.
Beim verschieben des Thumb springt dieses immer wieder auf 0 bzw. der letzten Position zurück. gruss |
AW: Scrollbar position ist falsch
Zitat:
Der MaxRange für die Scrollbar(HSCROLL) war einfach zu hoch. Habe den auf Sekunden umgelegt anstelle von Nano(Millisekunden) Sekunden gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz