AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Scrollbar position ist falsch

Ein Thema von EWeiss · begonnen am 3. Aug 2017 · letzter Beitrag vom 5. Aug 2017
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

Scrollbar position ist falsch

  Alt 3. Aug 2017, 11:11
Ich setze beim Start der Anwendung mit SetScrollRange den Maximalen Scroll wert.
Im Timer wird die Position gesetzt.

Code:
SetScrollPos(hWnd, SBS_HORZ, (int)MilSecond, FALSE);
In WM_HSCROLL versuche ich die aktuelle Thumb Position in Erfahrung zu bringen.
Ich frage mich nun warum wird diese falsch ausgegeben?

Code:
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;
}
Die frage warum wird die falsche Position ausgegeben wenn ich den Thumb loslasse?

gruss
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Scrollbar position ist falsch

  Alt 3. Aug 2017, 11:24
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
Fritz Westermann
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Scrollbar position ist falsch

  Alt 3. Aug 2017, 11:25
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
Wie wäre es denn richtig ?
Und vor allem behebt das mein Problem mit der Scroll Position?

OK ich denke kann diese aus
Code:
if (wParam = MOVIE_TIMER)
rauswerfen
und nur am ende von Case setzen.
Code:
    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;
gruss

Geändert von EWeiss ( 3. Aug 2017 um 11:29 Uhr)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Scrollbar position ist falsch

  Alt 3. Aug 2017, 11:31
Code:
 if (wParam = MOVIE_TIMER)
        {
            if (bIsTracking)
vielleicht nur ein Tipfehler - sollte es nicht == heißen?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Scrollbar position ist falsch

  Alt 3. Aug 2017, 11:33
Code:
 if (wParam = MOVIE_TIMER)
        {
            if (bIsTracking)
vielleicht nur ein Tipfehler - sollte es nicht == heißen?

Grüße
Klaus
Danke
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
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Scrollbar position ist falsch

  Alt 3. Aug 2017, 11:37
in C und C++ ist "=" ein Zuweisung enspricht in Pascal :=
== ist dann der Vergleich.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Scrollbar position ist falsch

  Alt 3. Aug 2017, 11:38
Zitat:
wo nun der unterschied ist zwischen = und == muss ich erst noch ergründen
c++ "=" delphi ":="
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

https://www.tutorialspoint.com/cplusplus/index.htm
Die Seite ist gar nicht schlecht
Fritz Westermann

Geändert von Fritzew ( 3. Aug 2017 um 11:40 Uhr) Grund: Noch einen Link eingefügt
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: Scrollbar position ist falsch

  Alt 3. Aug 2017, 11:43
Danke

Jo dann muss ich das noch korrigieren.
Wobei das aber nicht mein Problem mit der Scroll Position löst.

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: Scrollbar position ist falsch

  Alt 3. Aug 2017, 11:54
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

Geändert von EWeiss (11. Jul 2019 um 17:01 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: Scrollbar position ist falsch

  Alt 5. Aug 2017, 17:50
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
Problem wurde behoben.

Der MaxRange für die Scrollbar(HSCROLL) war einfach zu hoch.
Habe den auf Sekunden umgelegt anstelle von Nano(Millisekunden) Sekunden

gruss
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz