B
Also ich hab es folgendermaßen gelöst:
Es gibt eine Klasse, die immer dann aufgerufen wird, wenn sich die Eingangswerte der Peripherie ändern. Wenn diese Klasse also aufgerufen wird überprüfe ich in der selbigen, wie sich die Werte geändert haben, also ob ein Alarm anliegt oder nicht.
STDMETHODIMP CMeinKleinerAlarm::DataChange( bla bla)
{
....
....
if(ALARM)
m_blinkOnOff = TRUE;
....
...
}
Die Variable m_blinkOnOff ist eine boolsche Membervariable, die später das blinken ein bzw. ausschaltet.
Jetzt habe ich mir eine Klasse OnTimer erstellt die dann eine Variable im Wert ändert, wenn m_blinkOnOff==TRUE ist:
void CMeinKleinerAlarm::OnTimer(UNIT nIDEvent)
{
if (m_blinkOnOff==TRUE)
{
if(m_blink==FALSE)
{
m_blink = TRUE;
Blinking();
}
}
else
{
m_blink = TRUE;
Blinking();
}
Wie man erkennen kann ist m_blink eine Variable, die sich immer dann ändert, wenn OnTime() aufgerufen wird. Um dies zu realisieren, wird bei mir in der Klasse OnInitDialog() ein Timer mit gesetzt.
SetTimer(1,500,NULL)
So jetzt kann man in der Klasse Blinking, die alle 500ms aufgerufen wird das eigentliche blinken programmieren.
Da ich eine eine modifizierte ListCtrl von CodeGuru benutze brauche ich nur die Variable m_blink abzufragen und das jeweilige Item farblich ändern. Die modifizierte Liste kannst du dir hier anschauen:
http://www.codeguru.com/Cpp/controls/listview/article.php/c4189
void CMeinKleinerAlarm::Blinking()
{
if(m_blink==TRUE)
{
meineListe.SetItemBgColour(0,0,RGB(255,0,0))
meineListe.SetItemStyle(0,0,LIS_BGCOLOR)
}
if(m_blink==FALSE)
{
meineListe.SetItemBgColour(0,0,RGB(0,255,0))
meineListe.SetItemStyle(0,0,LIS_BGCOLOR)
}
}
Es ist natürlich noch nicht ganz fertig aber die Funktion des Blinkens ist somit schonmal gegeben. Jetzt muss jeder für sich überlegen, wie er die Funktion Blinking() programmiert, damit das blinken so ausgeführt wird wie er sich das wünscht.
Wenn aber irgendjemand gerade heulend vor dem Rechner zusammengebrochen ist, weil er meint: Das geht so aber gar nicht!!!!! Dann bitte belehrt mich. Ich möchte dazulernen!!
schönen Tag Euch noch und Draiman gib mal ein Feedback ob ich dir so helfen konnte, bzw. wie du das gelöst hast.
Gruß
Michael