求修改一段C++黑客帝国屏保的代码
在WndProc这个回调函数里加个鼠标移动消息(WM_MOUSEMOVE)的判断即可。
由于这个消息很灵敏,你感觉鼠标没有动,实际也退出了。所以,在这个消息下面再加上一个移动距离的判断即可。距离越短,鼠标移动时退出检测就越灵敏。
例如:
case?WM_MOUSEMOVE:{
static?int?xPos?=?0;//?上一次鼠标位置
static?int?yPos?=?0;
//?如果是0则是第一次接收,存储第一次鼠标位置
if?(xPos?==?0?||?yPos?==?0)
{
xPos?=?LOWORD(lParam);
yPos?=?HIWORD(lParam);
return?0;
}//?如果不是第一次接收,说明已有上次鼠标位置数据,与本次位置判断一下移动距离(即灵敏度)即可
else?if?(?abs(xPos?-?LOWORD(lParam))?>?100?||?abs(yPos?-HIWORD(lParam))?>?100?)
{
PostQuitMessage(0);//?鼠标移动大于100就退出
}
return?0;
}
abs求出绝对值来判断,可以保证如果算出负数距离仍能正确退出。lParam包含鼠标的xy坐标,需要LOWORD和HIWORD来取出。
实际上很简单,对吧?