Warum funktioniert denn das nicht ?



  • Ich möchte eine Uhrzeit in einer Textbox anzeigen, und die uhr soll mitlaufen.
    Kein problem die uhrzeit in einer messagebox darzustellen aber mit dem Timer funktioniert es nicht.

    Hier ist mein code

    #define NUM_ELEMENTS(x) (sizeof((x)) / sizeof((x)[0]))
    SYSTEMTIME st;
    TCHAR szTime[32];
    
    		case WM_TIMER:
    			SetTimer(hwnd, 1, 1000, NULL);
    			GetLocalTime (&st);
    			GetTimeFormat (LOCALE_USER_DEFAULT, LOCALE_USE_CP_ACP, &st, NULL, 
    			szTime, NUM_ELEMENTS(szTime));
    			SetDlgItemText(hwnd, IDC_EDIT1, szDate);
    
    		break;
    

    Irgendwo ist da der wurm dring. Weiß es einer ? Fehler bekomm ich keine, das textfeld ist einfach bloß leeeeeer.... 😕



  • SetTimer(hwnd, 1, 1000, NULL);
    

    setzt du den timer auch ausserhalb des WM_TIMER zweiges einmal ?

    ansonsten würde ich dir empfehlen, mal den debugger anzuschmeissen und innerhalb WM_TIMER einen breakpoint zu setzen. dann siehst du schon mal, ob zumindest der timer läuft.



  • ...zumal Windows irgendwann einmal die Segel streicht, wenn ständig irgendwelche Timer gesetzt werden, aber nie gekillt werden!

    Also schleunigst den SetTimer in WM_CREATE (oder beim Dialog: WM_INITDIALOG) und RAUS aus der WM_TIMER Nachrichtenbehandlung!



  • Ja im initDialog
    SetTimer(hwnd, 1, 1000, NULL); dann klappts auch mit der Uhrzeit
    und wie kill ich einen Timer ?

    oder geht das automatisch mit Programmende ?

    -------------------------

    .data
    stm SYSTEMTIME<>
    dateformat db "dd:MM:yyyy",0
    buffer db 100 dup (0)
    
    .code
    start:
    
    invoke GetLocalTime, addr stm
    invoke GetDateFormat, LOCALE_USER_DEFAULT, NULL, \
    addr stm,addr dateformat, addr buffer, sizeof buffer
    invoke MessageBox, 0, addr buffer, NULL, MB_OK
    invoke ExitProcess,NULL
    
    end start
    


  • KillTimer wird zwar imho bei Programm-Ende auch so gekillt, aber es ist einfach sauberer, wenn man das was man erstellt auch wieder freigibt 🙄


Anmelden zum Antworten