悬浮窗口应该具有的特性
为了实现让用户能方便打开软件主窗口,又不对用户界面造成明显的视觉干扰,悬浮窗口应该有以下特点:
- 和主窗口是二选一的关系,主窗口显示时自动隐藏,主窗口被全部遮挡时自动显示
- 始终置前,不被其它窗口遮挡,全屏播放电影、截图软件截图等情形时,取消置前。
- 支持全窗口拖动
- 半透明效果,鼠标移上时全为不透明
- 为了使隐藏和出现不显得突兀,支持淡入淡出效果
- 点击悬浮窗时,呼出主窗口,并隐藏悬浮窗口
上述特点的实现方案
整个实现方案依赖于主窗口内的一个定时器(200ms),定时检查主窗口的显示状态以及悬浮窗口的顶置属性。
和主窗口是二选一的关系,主窗口显示时自动隐藏,主窗口被全部遮挡时自动显示
与主窗口二选一的显示,是通过定时检查主窗口的显示状态,来设置是否显示悬浮窗口。
如果主窗口未隐藏,并且没有被其它窗口完全遮挡(可以是一个或者多个窗口的组合),悬浮窗口不显示。
IsEntirelyCovered(HWND hWnd)(http://blog.csdn.net/harbinzju/article/details/6781646)函数可以判断一个窗口,是否被完全遮挡住,可能是被一个或者多个窗口遮挡。