Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Timer in einem Thread ablaufen laasen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
29.07.2006, 14:52 Uhr
enne87



Hi!

Ich habe einen Timer erstellt, welcher im Sekundentakt läuft und erst mit Beenden meines Programmes beendet wird. Jetzt möchte ich diesen Timer in einem Thread ablaufen lassen.
Das Problem ist, dass die StartTimer-Funktion als static deklariert sein muss, um den Thread zu starten, jedoch muss ich in der StartTimer-Funktion zusätzlich noch die SetTimer-Methode aufrufen.
Nun bekomme ich immer die Fehlermeldung: "Unzulässiger Aufruf einer Nichtstatischen Methode".
Hier der Quellcode der StartTimer-Methode:
C/C++ Code:

C++:
UINT_PTR CCNCProgrammView::StartTimer(LPVOID pParam)
{
    CNCProgrammViewCall *call = (CNCProgrammViewCall*)pParam;
    UINT_PTR TimerVal;
    TimerVal = SetTimer(ID_CLOCK_TIMER, 1000, NULL);
    return TimerVal;
}
C/C++ Code:
UINT_PTR CCNCProgrammView::StartTimer(LPVOID pParam)
{
CNCProgrammViewCall *call = (CNCProgrammViewCall*)pParam;
UINT_PTR TimerVal;
TimerVal = SetTimer(ID_CLOCK_TIMER, 1000, NULL);
return TimerVal;
}
C/C++ Code:
UINT_PTR CCNCProgrammView::StartTimer(LPVOID pParam)
{
    CNCProgrammViewCall *call = (CNCProgrammViewCall*)pParam;
    UINT_PTR TimerVal;
    TimerVal = SetTimer(ID_CLOCK_TIMER, 1000, NULL);
    return TimerVal;
}




Danke im Voraus

mfg enne
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.07.2006, 14:55 Uhr
Pler
Einer von Vielen
(Operator)


Warum gehen Leute immer davon aus, dass gerade Windowszeug Standard ist? --> verschoben
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.07.2006, 16:37 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Warum gehen Leute immer davon aus, dass gerade Windowszeug Standard ist?


Schon mal drüber nachgedacht auf wieviel Prozent der PCs Windows läuft?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.07.2006, 18:51 Uhr
Hans
Library Walker
(Operator)



Zitat von Pler:
Warum gehen Leute immer davon aus, dass gerade Windowszeug Standard ist? --> verschoben

Na weil Mikroschrott das seit etwa 15 Jahren predigt, und etwa 95% aller PCs damit indoktriniert sind

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
30.07.2006, 14:27 Uhr
enne87



Leute, das ist echt wichtig, ich wär echt schon total dankbar wenn mir jemand sagen könnte, wie man eine nichtstatische Methode in einer statischen Methode aufrufen kann.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
30.07.2006, 14:46 Uhr
Bruder Leif
dances with systems
(Operator)


Die Frage ist eher, wozu einen Windows-Timer in einen Thread packen, wenn man gleich einen Thread verwenden kann, der mit SleepEx ab und zu schlafen gelegt wird... für exakte Zeitmessungen out-of-the-box ist eh beides ungeeignet.
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
30.07.2006, 16:24 Uhr
enne87



Ich weiß sonst nicht, wie ich das sonst realisieren soll. Das Problem ist, dass mein Programm total langsam ist, wenn nebenher noch ein Timer läuft, deswegen hab ich mir gedacht, ich nehm am besten einen Thread, der sich um den Timer kümmert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
30.07.2006, 16:55 Uhr
Bruder Leif
dances with systems
(Operator)


Öhm... was wird denn im Timer gemacht? Und was genau ist "langsam" -- die Reaktion des Programms auf Mausklicks etc., oder irgendeine Berechnung im Hintergrund?
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
30.07.2006, 18:43 Uhr
enne87



Das Erstere, also die Reaktionen auf Buttons etc. Im Timer wird einfach jede Sekunde die Sekundenanzahl um 1 erhöht und in einem Textfeld ausgegeben. Hier der Quellcode:


C++:
void CCNCProgrammView::OnTimer(UINT TimerVal)
{
    // schreibe formatierte Ausgabe in Textfeld
    if(m_seconds < 59)
        m_seconds++;
    else if(m_seconds >= 59)
    {
        m_seconds =  0;
        if(m_minutes < 59)
            m_minutes++;
        else if(m_minutes >= 59)
        {
            m_minutes = 0;
            if(m_hours < 23)
                m_hours++;
            else if(m_hours >= 23)
                m_hours = 0;
        }
    }

    m_nTest.Format(_T("%02d:%02d:%02d"), m_hours, m_minutes,m_seconds);
    UpdateData(FALSE);
}



Sobald die Sekundenanzahl 60 beträgt, wird die Minutenanzahl um 1 erhöht usw.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
30.07.2006, 18:59 Uhr
mmc20
puss in boots


hi, also als erstes würde ich in ontimer testen ob es sich auch um deinen timer handelt, also

C++:
if ( TimerVal == ID_CLOCK_TIMER ) {
// hier das machen was der timer machen soll
}


zweitens würde ich das UpdateData() weglassen und den string direkt in das control schreiben.
drittens würde ich warscheinlich nicht die sekunden selber zählen sonden CTime oder COleTime verwenden (oder etwas anderes um an die systemzeit zu kommen).

[4. sieht das verdammt nach MFC aus]

Dieser Post wurde am 30.07.2006 um 18:59 Uhr von mmc20 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: