WinApi-WndProc';s定时器程序问题

WinApi-WndProc';s定时器程序问题,winapi,Winapi,我有一个关于WndProc定时器程序功能的问题。 如果在计时器调用该函数后显示函数尚未完成,会发生什么情况?如果下一个TM_计时器函数被及时调用,但它仍在运行显示函数,会发生什么情况 LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; static HANDLE hTimer; switch (iMessage) { case WM_

我有一个关于WndProc定时器程序功能的问题。 如果在计时器调用该函数后显示函数尚未完成,会发生什么情况?如果下一个TM_计时器函数被及时调用,但它仍在运行显示函数,会发生什么情况

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;
}

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


计时器消息通常通过从主消息循环调用
GetMessage
来合成

从消息队列检索消息时,会合成计时器消息。它们不能中断线程的任务


计时器消息通常通过从主消息循环调用
GetMessage
来合成

谢谢,但我并没有完全理解,这意味着显示功能不能在完成之前被计时器打断。我说的对吗?@grander2-是的,当然显示功能不会被打断。是您的代码调用GetMessage。只要你不在Display_功能中发送消息,那么就不会有重新进入。谢谢,但我没有完全理解,这意味着Display_功能在完成之前不能被计时器中断。我说的对吗?@grander2-是的,当然显示功能不会被打断。是您的代码调用GetMessage。只要您不在Display_功能中发送消息,就不会有重入。每个人似乎都使用了错误的方式。nIDEvent参数的指针大小是有原因的。设置具有唯一ID的指针的安全方法是传递(本地)变量的地址。这样,ID就不会与另一个计时器ID发生冲突。每个人似乎都使用了错误的方式。nIDEvent参数的指针大小是有原因的。设置具有唯一ID的指针的安全方法是传递(本地)变量的地址。这样,该ID就不会与另一个计时器ID发生冲突。