[视频监控]任务栏装拖拽处理
2013-08-26 16:22 鉴于 阅读(467) 评论(0) 编辑 收藏 举报在windows系统中,任务栏通常位于桌面底部,可以隐藏或者不隐藏,其实任务栏可以被拖动到桌面的顶部或者左侧和右侧。
对于视频监控客户端来说,首先需要判断任务栏是否隐藏,如果用户设置为隐藏任务栏,则不需要考虑任务栏在上下左右的哪个位置,反正都是全屏覆盖。但是如果任务栏不隐藏,则需要获取任务栏的位置,然后计算除任务栏其他区域,将主窗体Move到该位置。
使用::FindWindow(_T("Shell_TrayWnd"), NULL); 获取任务栏句柄,
使用 SHAppBarMessage(ABM_GETSTATE, &apBar); 判断任务栏是否隐藏,如果返回值为ABS_AUTOHIDE,则用户设置任务栏为隐藏。
对于设置为隐藏任务栏的系统,直接计算出桌面的范围,直接MoveWindow主窗体,让主窗体覆盖桌面。再Return。
对于非隐藏桌面的系统需要获取任务栏位置。
使用SHAppBarMessage(ABM_GETTASKBARPOS, &apBar) 获取任务栏所在方位(上下左右)及高度宽度。
switch(uEdge) {
case ABE_LEFT: //任务栏在左侧
……
break;
case ABE_TOP: //任务栏在顶部
……
break;
case ABE_RIGHT: //任务栏在右侧
……
break;
case ABE_BOTTOM:
……
break;
default:
……
break;
}
首先获取桌面的RECT,然后依据任务栏位置不同以及高度宽度不同,计算出剩余区域的范围,将主窗体MoveWindow到该位置就OK。一个好的应用软件,应该能在细节上考虑到广大用户的特点。