WinApi WndProc的定时器程序问题

时间:2017-01-15 16:28:26

标签: winapi

我对WndProc的定时器过程功能有疑问。 如果Display_function在定时器调用的函数之后还没有完成,如果下一个TM_TIMER函数被及时调用但仍然在运行Display_function会发生什么呢?

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
static HANDLE hTimer;
switch (iMessage)
{
case WM_COMMAND:
switch (LOWORD(wParam))
{
case 0:

hTimer = (HANDLE)SetTimer(hWnd, 1, 10, NULL); //10ms
SendMessage(hWnd, WM_TIMER, 1, 0); 
break;

....
case WM_TIMER:
switch (wParam)
{
case 1:
Display_function(hWnd); 
break;
}

1 个答案:

答案 0 :(得分:2)

从邮件队列中检索邮件时,将合成计时器消息。他们不能从任务中断线程。

定时器消息通常是通过主消息循环中对GetMessage的调用合成的。