我用VS2010创建了一个Win32应用程序,然后再WndProc中添加对WM_KEYDOWN消息的处理.
我的处理代码如下:
if(message == WM_KEYDOWN)
{
SYSTEMTIME time;
GetLocalTime(&time);
char buffer[1000] = {0};
sprintf_s(buffer,"%d-%d\r\n", time.wSecond, time.wMilliseconds);
OutputDebugString(buffer);
}
就是当键盘按下的时候把当前的“秒-毫秒”打印出来。当我一直按下一个键时打印如下:
11-70
11-569
11-600
11-631
11-663
11-694
11-725
11-772
..
..
后面就不贴了,只看前面就够了。第一个WM_KEYDOWN和第二个WM_KEYDOWN之间的时间差距太大。居然有大概700多毫秒。而从第二个开始后面的WM_KEYDOWN消息的时间间隔都是均匀的。为什么第一个和第二个差距这么大?如何缩小这个700毫秒的时间差距?Visual Studio 2010win32
我的处理代码如下:
if(message == WM_KEYDOWN)
{
SYSTEMTIME time;
GetLocalTime(&time);
char buffer[1000] = {0};
sprintf_s(buffer,"%d-%d\r\n", time.wSecond, time.wMilliseconds);
OutputDebugString(buffer);
}
就是当键盘按下的时候把当前的“秒-毫秒”打印出来。当我一直按下一个键时打印如下:
11-70
11-569
11-600
11-631
11-663
11-694
11-725
11-772
..
..
后面就不贴了,只看前面就够了。第一个WM_KEYDOWN和第二个WM_KEYDOWN之间的时间差距太大。居然有大概700多毫秒。而从第二个开始后面的WM_KEYDOWN消息的时间间隔都是均匀的。为什么第一个和第二个差距这么大?如何缩小这个700毫秒的时间差距?Visual Studio 2010win32
可以在wm_keydown之后设置起一个30毫秒的timer,在timer中GetAsyncKeyState检测你的按键状态,如果是按下状态就执行图形的移动。
wm_keyup之后就把这个timer kill掉