若想知道鼠标当前是否在任务栏,需要知道两点:
- 鼠标当前坐标
- 任务栏所处坐标位置
一般情况下鼠标当前坐标位置会由调用方传过来,所以这里只给出任务栏区域位置。代码如下:
int main()
{
int a, b, c, d, x, y;
RECT rt;
x = GetSystemMetrics(SM_CXSCREEN);
y = GetSystemMetrics(SM_CYSCREEN);
printf("屏幕坐标: x = %d, y = %d\n", x, y);
SystemParametersInfo(SPI_GETWORKAREA, 0, &rt, 0);
a = rt.top;
b = rt.bottom;
c = rt.left;
d = rt.right;
printf("上下坐标: top = %d, bottom = %d\n", a, b);
printf("左右坐标: left = %d, right = %d\n", c, d);
return 0;
}
此处主要用到 GetSystemMetrics() 和 SystemParametersInfo() 两个方法,调用时需要引入 windows.h 头文件,感兴趣的可以自行搜索相关文档。执行结果如下:
由此可见,当鼠标坐标参数传过来时,如果纵坐标如 y > 960,就可以认为鼠标在任务栏了。但这仅限于任务栏在桌面下方的情况,如果在桌面顶部、或左侧、或右侧时,就需要调整相应的判断条件了。
以上。