求修改一段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来取出。

实际上很简单,对吧?