【发布时间】:2014-08-03 11:11:43
【问题描述】:
创建窗口后,我启动了一个计时器来做某事。代码如下:
SetTimer(hWnd, 1, 40, NULL); //tick each 40 ms.
我追踪了最后一个错误,它是 0。但我无法接收 wm_timer!代码如下:
case WM_TIMER:
{
//...
}
我的IDE是VS2010,操作系统是Windows7,请问我使用的环境有什么特殊情况吗?
附:好吧,我提供更多代码,它是一个 win32 应用程序,所以在 WinMain 中:
HWND hWnd = CreateWindow(...); //style : WS_POPUP | WS_VISIBLE , return is good
SetTimer(hWnd, 1, 40, NULL); //return is good too.
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
和 WndProc:
switch(message)
{
case WM_TIMER:
{
DebugBreak(); //no reaction
}
break;
.......
}
【问题讨论】:
-
是的,这是1.良好的回报。
-
您需要发布更多代码。如何设置 WndProc 以及在何处启动计时器。
-
另外,创建窗口和计时器的线程中是否有消息循环运行?
-
你做错了什么。为了了解它是在生成定时器消息之前,还是生成它们但未能正确处理,请使用
Spy++SDK 工具检查您的窗口消息并找出是否存在定时器消息。