在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。一个好的应用软件,应该能在细节上考虑到广大用户的特点。

相关文章:

  • 2021-06-24
  • 2021-07-31
  • 2021-05-04
  • 2021-12-29
  • 2021-11-15
  • 2022-12-23
猜你喜欢
  • 2021-04-26
  • 2021-08-17
  • 2021-09-24
  • 2022-12-23
  • 2021-05-04
  • 2021-07-20
  • 2022-12-23
相关资源
相似解决方案