我做了一个钩子dll,用来捕获鼠标移动,界面上如果几秒没有移动鼠标,则鼠标自动消失,如有移动,又显示。可是不知为什么在鼠标的显示和隐藏总是不能按照我规定的时间及时显示或者隐藏??OnTimer函数如下:
DWORD nsec = (GetTickCount()-ClfUIGetLastInputTime());//ClfUIGetLastInputTime()从dll中返
回,这一步没问题,下面的程序就像没执行,真晕!!
if (nsec>=2)
ShowCursor(FALSE);
else
ShowCursor(TRUE);定义的timer是:SetTimer(1, 1000, NULL);
DWORD nsec = (GetTickCount()-ClfUIGetLastInputTime());//ClfUIGetLastInputTime()从dll中返
回,这一步没问题,下面的程序就像没执行,真晕!!
if (nsec>=2)
ShowCursor(FALSE);
else
ShowCursor(TRUE);定义的timer是:SetTimer(1, 1000, NULL);
ClipCursor(rct); ClipCursor(NULL);
更精确一些的有timeGetTime函数,该函数集有如下函数:
timeBeginPeriod
timeEndPeriod
timeGetDevCaps
timeGetSystemTime
timeGetTime
timeKillEvent
TimeProc
timeSetEvent
是一个多媒体定时器函数集。
对于时间的不准确问题,可以使用timeSetEvent来处理,能精确到1ms。
再精确的有QueryPerformanceCounter函数,再想精确就得写驱动了。 :DShowCursor 的参数只是增减鼠标显示的计数值,这个计数值是由系统维护的。
只有当计数值>=0时鼠标才显示,<0则隐藏。