Problem mit einem Trackbar



  • Habe einen Lautstärkeregler mit einem TrackBar programmiert, der Wert sollte in einen String eingebunden werden aber das macht komische Sachen: Der Wert geht von 70-79 und springt dann sofort auf 710 und geht dann von 710 - 7100 oder das Selbe mit 50-59, 510 - 5100! Der DrackBar geht von 0-100 was auch funktioniert wenn ich den Wert direkt, ohne StrNCat mit TextOut ausgebe. Nur nach der StrNCat (oder einer anderen eigenen Routine genau gleich) passiert das oben beschriebene. Auffällig noch bei den Deklarationen dass ich einmal db anstatt dd verwenden musste aber der Wert vom TrackBar scheint OK wie bei der direkten Ausgabe ersichtlich. Hier der Codeausschnitt, zuerst Deklarationen:

    tbnull db 0         ; mit dd= unveraenderliches TrackBar!!
    tbhundert dd 100
    tbsiebzig dd 70
    svol db 255 dup (?),0
    ----------------------------------
    ; Trackber erstellen:
    
    invoke CreateWindowEx,NULL,addr TrackBarClassName, NULL, WS_CHILD or WS_VISIBLE,220,60,70,20,hWin, TrackBarID, hInstance, NULL
    mov hwndTrack, eax
    invoke SendMessage, hwndTrack, TBM_SETRANGE, tbnull, tbhundert
    invoke SendMessage, hwndTrack, TBM_SETPOS, TRUE, tbsiebzig
    
    ;-------------------------------- Fensterprozedur:
    
    .elseif uMsg==WM_HSCROLL                      
    
    mov setvol[28],0
    
    invoke SendMessage, hwndTrack, TBM_GETPOS, TRUE, NULL
    
    invoke wsprintf, addr svol, addr sformat, eax
    
    invoke StrNCat, addr setvol, addr svol, 255
    invoke GetDC, hWin
                mov devicecontext, eax
                invoke TextOut,eax, 10, 40, addr setvol, 50
    
    invoke mciSendString, addr setvol, 0, 0, 0
    

    funktionsfähig ist einfach

    invoke SendMessage, hwndTrack, TBM_GETPOS, TRUE, NULL
    invoke wsprintf, addr svol, addr sformat, eax
    invoke GetDC, hWin
    mov devicecontext, eax
    invoke TextOut,eax, 10, 40, addr svol, 50
    

    Vielen Dank!



  • bleib weg mit deinem dummen assembler zeug



  • Du bist doch nur neidisch weil du kein ASM kannst 🕶


Anmelden zum Antworten