Scrollbar (SB_CTL) funktioniert nicht, brauche hilfe!



  • hallo, ich habe ein programm geschrieben in der OpenGl, welches dynamische körper darstellt, in meinen menu habe ich ein item welches dazu dient den körper bei bedarf autmoatisch rotieren zulassen, klappt alles. nun habe ich die geschwindigkeit der rotation in einer float variable gespeicht also für jede achse eine( xObj, yObj, zObj ). nun habe ich mir in einem dialog eine scrollbar erstellt, bis hier hat alles super geklappt scrollbar da hm und weiter? ich habe es so versucht:

    bool CALLBACK HelpProc( HWND Dlg1, UINT message, WPARAM wParam,
                               LPARAM lParam ) {
    
        static float min = 0.0f;
        static float max = 10.0f;
        static float scrollPos = 0.1f;
    
        switch( message ) {
    
            case WM_INITDIALOG: {
    
                SetScrollRange( GetDlgItem( Dlg1, 110 ), SB_CTL, min, max, false );
    
                return true;
            }
    
            case WM_HSCROLL: {
    
                switch( wParam ) {
    
                    case SB_LINEUP: {
    
                        if( min > 0.0f ) {
    
                            scrollPos -= 0.1f;
                        }
                        break;
                    }
    
                    case SB_LINEDOWN: {
    
                        if( max < 10.0f ) {
    
                            scrollPos += 0.1f;
                        }
                        break;
                    }
                }
    
                SetScrollPos( GetDlgItem( Dlg1, 110 ), SB_CTL, scrollPos,  true );
    
                sprintf( workstring, "%d", scrollPos );
    
                xObj = scrollPos;
                yObj = scrollPos;
                zObj = scrollPos;
    
                return true;
            }
    
    //...
    

    ich habe mir gedacht den wert von scrollPos fuer den float wert in den variablen x-,y- und zObj zu nutzen. klappt der nicht wieso??? auch wenn ich so ver such den regler der sbar zu verschiben kann ich ihn zwar greifen und nach rehts ziehen aber beim los lassen "schnippst" er wieder nach links zurück, so wird dder wert aus scrollPos nicht gesetzt... was ist falsch in meinem code???



  • Mal den Return-Wert von 'SetScrollRange' geprüft ?



  • welchen?



  • Entweder die Werte ausgeben lassen die du übergibst oder manuell einfach eigenen Werte ausprobieren.

    SetScrollRange( GetDlgItem( Dlg1, 110 ), SB_CTL, min, max, false );
    


  • sorry ich verstehs net... kann net mal jemand an der stelle daS REINBRING WIES SEIN muss???



  • MSDN zu SetScrollRange(...) schrieb:

    Return Values
    If the function succeeds, the return value is nonzero.

    If the function fails, the return value is zero. To get extended error information, callGetLastError.

    Überprüf einfach den Aufruf von SetScrollRange unter WM_INITDIALOG.



  • ich hab des noch nie gemacht mit getlasterror() hmm



  • kann es sein das die scrollbar mit float werten nicht funktioniert den mit int-werten gehts



  • T0bi schrieb:

    kann es sein das die scrollbar mit float werten nicht funktioniert den mit int-werten gehts

    float wird nach int gecastet (implizit), kann also sein, das deine Werte zu klein sind...


Anmelden zum Antworten