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
FatalErrorEdit: 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 tunMFG
FatalError & MERRY X_MAS