Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#8

AW: Mousewheel kontrollieren

  Alt 21. Aug 2017, 10:11
Zitat:
verzögere das doch per Timer?
Das läuft im Timer

ok zur Veranschaulichung!

Bsp. HSCROLL
sobald einer der unteren messagen eintritt wird gP.bVolume auf True gesetzt.
lasse ich die Maus los schalte ich sie bei TB_ENDTRACK wieder auf false.
Im Timer wird dann die Schrift.. Value der Lautstärke auf ein Overlay Bitmap gezeichnet solange bis die Maus losgelassen wird und das Ereignis TB_ENDTRACK eintritt.

Code:
    case WM_HSCROLL:
    {
        switch LOWORD(wParam)
        {
        case TB_ENDTRACK:
            gP.bVolume = FALSE;
            break;
        case TB_THUMBTRACK: // ziehen des "Sliders"
        case TB_TOP:        // Pos1
        case TB_BOTTOM:     // Ende
        case TB_LINEDOWN:   // Pfeiltasten oben/unten
        case TB_PAGEDOWN:   // Bild runter & in die Leiste geklickt
        case TB_PAGEUP:     // Bild auf & in die Leiste geklickt
        {
            gP.bVolume = TRUE;
            gP.Position = (int)SendMessage(gP.hTBVolume, TBM_GETPOS, 0, 0);
            if (gP.Position == 0)
                KVideo_SetVolume(-10000);
            else
                KVideo_SetVolume(LONG(5000 * log10(gP.Position)) - 10000);
        }
        break;
        }
    }
    break;
Timer..

Code:
                        if (gP.bWheel)
                        {
                            WCHAR wWheel[MAX_PATH] = { 0 };
                            WCHAR wtmpWheel[MAX_PATH] = { 0 };
                            if (gP.zoom < 10)
                            {
                                _snwprintf_s(wtmpWheel, MAX_PATH, 259, L"%I64u Zoom", gP.zoom);
                                Str_Combine(wWheel, L"0", wtmpWheel);
                            }
                            else
                                _snwprintf_s(wWheel, MAX_PATH, 259, L"%I64u Zoom", gP.zoom);

                            DrawTextToDC(gP.OverlayDC, (WCHAR*)wWheel, rc.left, rc.top, nColor, gP.FontName, 36, n3D, ZD_TextHorzUp, gP.PrivateFont);
                            gP.bWheel = FALSE;
                        }
                        else if (gP.bVolume)
                        {
                            WCHAR wVolume[MAX_PATH] = { 0 };
                            WCHAR wtmpVolume[MAX_PATH] = { 0 };
                            int volume = (int)SendMessage(gP.hTBVolume, TBM_GETPOS, 0, 0);

                            if (volume < 100)
                            {
                                _snwprintf_s(wtmpVolume, MAX_PATH, 259, L"%d Vol", volume);
                                Str_Combine(wVolume, L"0", wtmpVolume);
                            }
                            else
                                _snwprintf_s(wVolume, MAX_PATH, 259, L"%d Vol", volume);

                            DrawTextToDC(gP.OverlayDC, (WCHAR*)wVolume, rc.left, rc.top, nColor, gP.FontName, 36, n3D, ZD_TextHorzUp, gP.PrivateFont);
                        }
                        else
                            DrawTextToDC(gP.OverlayDC, (WCHAR*)OverlayTime, rc.left, rc.top, nColor, gP.FontName, 36, n3D, ZD_TextHorzUp, gP.PrivateFont);
bei Volumen ist das kein Problem weil ich hier ein Ereignis auswerten kann.
Das geht aber nicht bei MouseWheel.


gruss

Geändert von EWeiss (21. Aug 2017 um 10:16 Uhr)
  Mit Zitat antworten Zitat