Timer en geen Window

Status
Niet open voor verdere reacties.

SuperABC

Gebruiker
Lid geworden
16 jul 2009
Berichten
327
In dit stukje code is het de bedoeling om de messages te krijgen van de timer, ik heb het al geprobeerd met de window procedure maar dat lukt niet omdat, er geen window is.

[CPP]
#include <windows.h>
const char g_szClassName[] = "myWindowClass";
const int ID_TIMER = 1;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {

UINT ret;
ret = SetTimer(NULL, ID_TIMER, 5000, NULL);
if(ret == 0)
MessageBox(NULL, "Timer Failed", "Error", MB_OK | MB_ICONEXCLAMATION);
MSG msg;
while(GetMessage(&msg, NULL, 0, 0)) DispatchMessage(&msg);
return msg.wParam;
return 0;
}
[/CPP]

Maar ik heb al heel veel geprobeerd om de messages van de timer te krijgen zonder dat het gelukt is. Weet iemand hoe ik die message krijg dus elke 5s? En kan dit wel zonder dat je een window creeërt?
 
Maak gebruik van een TimerProcedure functie.

Code:
//Globaal definiëren van de callback functie
VOID CALLBACK TimerProc( HWND, UINT, UINT_PTR, DWORD );

//De daadwerkelijke TimerProcedure functie
VOID CALLBACK TimerProc( HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime )
{

    //Plaats hier je code
}

//Het aanmaken van je timer
UINT_PTR nTimerID = SetTimer( NULL, 0, 5000, TIMERPROC( TimerProc ) );

Het gebruik maken van een timer zonder dat je programma gebruik maakt van een window blijft niet praktisch. Dit zal altijd verwerkt moeten worden met een 'omweg'.

"When you specify a TimerProc callback function, the default window procedure calls the callback function when it processes WM_TIMER. Therefore, you need to dispatch messages in the calling thread, even when you use TimerProc instead of processing WM_TIMER." -MSDN

Je kunt beter een nieuwe thread aanmaken waarin je een oneindige lus plaatst die op het einde van de lus de Sleep functie roept.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan