Timer oder Thread in eigner Klasse?
-
Hallo ihr,
ich habe eine eigene Klasse programmiert welche zugriff auf ein externes Datenobjekt hat. Die aufgabe dieser klasse ist es die daten visuell darzustellen, und soll sich in einem bestimmten interval unabhängen vom datenobjekt updaten und darstellen.
Was bietet sich da an ? einen thread der , oder einen Timer?
kann ich überhaupt eine Timer in eine normale klasse einbauchen, da diese ja keine MESSAGE LOOP hat etc. ????
-
Eine Möglichkeit wäre es, in der OnTimer deiner Applikation etwas wie
MeineInstanz->Update();zu machen.
-
Ich würde die Klasse, die rechnen soll, in einem Thread ausführen und von dort aus von Zeit zu Zeit eine Nachricht an die Klasse senden, die zeichnet.
-
kannst du mir da mal ein beispiel machen turin versteh dias nicht so gant?
-
Nur prinzipiell zu verstehen:
void CKlasse::StarteThread(void) { AfxBeginThread(ThreadFunktion, this); } UINT CKlasse::ThreadFunktion(LPVOID lParam) { CKlasse* pK = (CKlasse*) lParam; for (int i=0; i < 100; ++i) { // rechne was PostMessage(pK->GetSafeHwnd(), WM_HAB_WAS_BERECHNET); } } LRESULT CKlasse::OnHabWasBerechnet(WPARAM wParam, LPARAM lParam) { // zeichne aktuellen Status der Berechnung }Natürlich musst du auch noch die Nachricht definieren und beim Message-Mapping hinzufügen, aber prinzipiell funktioniert es so.
-
ok und damit ich die message map hinzufügen kann muss ja die CKlasse von CWnd erbene oder?