Kurze Delays erzeugen



  • Mist!
    Daran lags auch nicht.
    Hab da nähmlich n Problem:
    Ich will eine Animation, auf einem Button in einer DO WHILE Schleife erzeugen.
    Das will aber nicht so richtig funktionieren.
    Weiß da jemand Rat?
    Der Code sieht wie folgt aus:

    do
        {
            counter++;
            m_Icon = AfxGetApp()->LoadIcon( IDI_VU1 ); 
            m_ctlButton.SetIcon( m_Icon ); 
            Sleep(500);
    
            m_Icon = AfxGetApp()->LoadIcon( IDI_VU2 ); 
            m_ctlButton.SetIcon( m_Icon );
            Sleep(500);
    
            m_Icon = AfxGetApp()->LoadIcon( IDI_VU3 ); 
            m_ctlButton.SetIcon( m_Icon ); 
            Sleep(500);
    
        } while (counter < 10);
    

    MFG
    FatalError



  • Thread verschoben ins WinApi Forum.
    WinAPI



  • das ist wohl MFC - also nimm einen Timer!



  • Habs jetzt so gemacht:
    Krieg aber die Fehlermeldung, dass die Funktion SetTimer keine 4Parameter akzeptiert.
    Warum?

    void CTesticonDlg::OnButton1() 
    {
        HWND        hWnd;
        const UINT  TimerSec    = 1;
        int counter = 0;
    
        do
        {
            counter++;
            m_Icon = AfxGetApp()->LoadIcon( IDI_VU1 ); 
            m_ctlButton.SetIcon( m_Icon ); 
            SetTimer(hWnd, TimerSec, 1000, NULL);
            do
            {} while (WM_TIMER != TRUE);
    
            m_Icon = AfxGetApp()->LoadIcon( IDI_VU2 ); 
            m_ctlButton.SetIcon( m_Icon );
            SetTimer(hWnd, TimerSec, 1000, NULL);
            do
            {} while (WM_TIMER != TRUE);
    
            m_Icon = AfxGetApp()->LoadIcon( IDI_VU3 ); 
            m_ctlButton.SetIcon( m_Icon ); 
            SetTimer(hWnd, TimerSec, 1000, NULL);
            do
            {} while (WM_TIMER != TRUE);
    
        } while (counter < 10);
    
    }
    

    Hab ich da was vergessen 😕

    MFG
    FatalError

    Edit: Am Code was korrigiert

    [ Dieser Beitrag wurde am 24.12.2002 um 14:19 Uhr von FatalError editiert. ]



  • Häh? Warum verwendest du denn 3x SetTimer???

    cya

    EDIT: Wenn du MFC programmierst, steig um auf WinAPI, ist viel cooler 🕶!

    [ Dieser Beitrag wurde am 24.12.2002 um 14:48 Uhr von MagiC Creator editiert. ]



  • Ich weiß doch och net.
    Habs aus nem Beispielprogramm raus udn halt irgendwie so übernommen. 😃
    Ich programmiere in MFC, stimmt.
    Wenn ich wüsste, 1.Was WinApi ist und 2.Woher man das kriegt, würde ich mir das mit dem Umsteigen überlegen. (ABer trotzdem bei MFC bleiben :p )

    MFG
    FatalError



  • Hab jetzt den Code folgendermaßen abgeändert:

    void CTesticonDlg::OnButton1() 
    {
    
        const UINT  TimerSec    = 1;
        int counter = 0;
        SetTimer(TimerSec, 300, NULL);
        do
        {
            counter++;
            m_Icon = AfxGetApp()->LoadIcon( IDI_VU1 ); 
            m_ctlButton.SetIcon( m_Icon ); 
    
            do
            {} while (WM_TIMER != TRUE);
    
            m_Icon = AfxGetApp()->LoadIcon( IDI_VU2 ); 
            m_ctlButton.SetIcon( m_Icon );
    
            do
            {} while (WM_TIMER != TRUE);
    
            m_Icon = AfxGetApp()->LoadIcon( IDI_VU3 ); 
            m_ctlButton.SetIcon( m_Icon ); 
    
            do
            {} while (WM_TIMER != TRUE);
    
        } while (counter < 10);
    
    }
    

    Also den ersten Eintrag in SetTimer weggelassen und SetTimer nur am Anfang des Programmes geschrieben.
    Ich erhalte zwar nun keine Fehlermeldung mehr und das Programm starten, aber es hängt jetzt bei der ersten Warteschleife.
    Ich steh nun veor nem noch größerem Problem, als mit Sleep().
    Bei Sleep war es so:
    Das Programm aktualisiert das Icon immer nur am Ende der Schleife.
    Heißt: erst, wenn DO WHILE fertig durchlaufen ist wird das Icon angezeigt, was dazu führt, dass erstmal eine gewisse Zeit ohne Reaktionen des Progs. vergeht und dann das letzte Icon der Schleife angezeigt wird.

    Was hab ich nun wieder bei den Timern falsch gemacht? 😞
    MFG
    FatalError



  • Original erstellt von FatalError:
    **
    Wenn ich wüsste, 1.Was WinApi ist und 2.Woher man das kriegt, würde ich mir das mit dem Umsteigen überlegen. (ABer trotzdem bei MFC bleiben :p )
    **

    soll das jetzt ein witz sein ? die mfc ist nichts anderes als eine objektorientierte kapselung der winapi..



  • Hallo !!
    Ich bin nicht MOSES.
    Sonst würde ich ja nicht hier sein. 😃
    Mich interessiert die Geschichte von MFC -NULL,garnix-.
    Ich will damit halt nur programmieren, mehr nicht.



  • Du kannst dir ja mal ein gutes WinAPI-Tutorial anschauen, wo auch was über Ownerdraw-Buttons drinsteht, damit dürfte dein Problem vielleicht leichter zu lösen sein 🙂

    cya



  • Versteh ich jetzt net.
    Gehört das jetzt zu meinem Thema?
    Wenn ja, was haben "Ownerdraw-Buttons" damit zu tun 😕

    MFG
    FatalError & MERRY X_MAS


Anmelden zum Antworten