Problem mit Progressbar( PBM_SETPOS )!



  • hallo,
    ich habe eine appi die in einer list einträge reinschreibt, da dies aber sehr viele sind und auch einige minuten dauern kann, wollt ich ne progressabr mit rein basteln um den fortschritt darzustellen.
    da ja die range der PB von 0-65535 begrenzt ist und ich nun aber mehr als 100000Eintraege machen lasse wollte ich statt der PBM_STEPIT methode lieber die PBM_SETPOS methode verwenden.
    meine idee:
    - ich ermittle den momentanen wert und teile diesen durch den endwert, dann mal 100, daraus erhalte ich nen prozentwert 0-100
    -nun setze ich die range meine PB auf 0-100
    - in der do-while schleife ermittle ich immer und immer wieder den momentanen prozentwert und je nachdem ob er sich erhöht hat soll die position dem wert entsprechen

    müsste doch eigentlich ganz gut gehen oder? tut es aber nicht. ich sehe keinen fortschritsbalken in der PB, erst am ende wenn alle sdurchlaufen ist wird der balken angezeigt.

    do {
    
        // code ...
    
        curStat = ( ( scan.getstartAdd( ) / 0x01000000 ) * 100 ); //ermittle curpos
        SendMessage( proStatus, PBM_SETPOS, curStat, 0 );         //setze pos
    
    } while( scan.getstartAdd( ) < 0x01000000 );
    

    könnte mir jemand sagen wie ich den bug behebe?

    Gruß Tobi.


  • Mod

    Das ist kein Bug! Du hast nur die Doku nicht gelesen.

    Ja PBM_SETRANGE ist auf 65535 begrenzt. PBM_SETRANGE32 nicht.
    Und PBM_SETPOS ist nur auf den Wert von PBM_SETRANGE(32) begrenzt.



  • also einfach so:
    SendMessage( proStatus, PBM_SETRANGE32, 0, MAKELPARAM( 0, 100000 ) );
    SendMessage( proStatus, PBM_SETSTEP, (WPARAM)1, 0 );

    und in der schleife SendMessage( proStatus, PBM_STEPIT, 0, 0 );

    so gehts dann oder wie?



  • ohh... alle sklar hab ne definition gefunen:
    net so SendMessage( proStatus, PBM_SETRANGE32, 0, MAKELPARAM( 0, 100000 ) );
    sondern so: SendMessage( proStatus, PBM_SETRANGE32, 0, 100000 );

    danke dir!

    Gruß Tobi.


Anmelden zum Antworten