Schon wer mit Multimedia Timern gearbeitet?
-
Und nochmal ich... so, mein erster Problem ist weg, nun hab ich ein viel tolleres. Ich bekomme scheinbar kein Event von meinem Timer
Den hier hab ich mir ausgesucht
http://www.codeproject.com/miscctrl/multimediatimer.asp#xx744232xxAngeblich bekommt man ein Event vom Timer, wenn er einen Hit hat (Ausdruck vom Programmierer), was für mich bedeutet, wenn er incrementiert wird, also angesprochen wird, bekomme ich einmal dieses Event.
Bei mir wird es wie folgt aufgerufen:
CClock<CCommDlg> myClock; myClock.SetCallBack(this); myClock.SetDelay(500); // in ms for a one shot timer myClock.start(); // start the clock
Und das "Eventhandling" dann entsprechend:
void CCommDlg::TimerHappened(int id) { myClock.stop(); // stop the clock VARIANT var2; CString str; var2 = m_mscomm.GetInput(); m_getvalue = var2.bstrVal; CDialog::OnOK(); }
Ergebnis des Ganzen... mein Dialog öffnet sich und bleibt offen. Eigentlich sollte er ja zugehen, sofern TimerHappened abgearbeitet wird.
Wer ne Idee? Wiederum Thx im Voraus...
-
Wird das CClock-Objekt vielleicht zerstört weil es den Scope verlässt?
-
Das sind Fragen, von denen ich null Ahnung hab
Bin ned wirklich erfahren beim Programmieren weil ich kein Informatiker bin sondern nen Elektroniker und somit nen Schmalspurprogrammierer
Hab aber eben (vor 2 Minuten) eine funktionierende Lösung gefunden für mein Problem
Man packe ein:
#include "windows.h"
Rufe auf
Aber bitte ID_TIMER unter Resource Symbols hinzufügen
SetTimer(ID_TIMER, 50, NULL); //50ms
Und behandle das Event (Über den Wizard WM_TIMER in dem Dialog einfügen, per Hand is es nen bissl mehr)
void CCommDlg::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default CDialog::OnTimer(nIDEvent); KillTimer(ID_TIMER); VARIANT var2; CString str; var2 = m_mscomm.GetInput(); m_getvalue = var2.bstrVal; CDialog::OnOK(); }
Und fertig ist ein funktionierender Timer! Hab ja nur 6 Stunden gegrübelt wies funktionieren soll
Einzige Sache ist... nun schliesst er das Fenster dadrunter nicht mehr automatisch, was vorher bei Nutzung von CTime funktionierte, nicht automatisch
Aber 256 Register eines Bausteins auszulesen mit CTime bei minimal 1 Sekunde Abstand ist... öhm, naja... indiskutabel
Naja, das bekomm ich auch noch irgendwie hin! Denke ich... ok... vielleicht