获得桌面工作区大小,即不包括任务栏的大小,制作窗口全屏时经常用到,方法如下:
- RECT rt;
- SystemParametersInfo(SPI_GETWORKAREA,0,(PVOID)&rt,0);
获得任务栏高度与宽度方法有二:
1.判断位置
- RECT rt;
- SystemParametersInfo(SPI_GETWORKAREA, 0, &rt, 0) // 获得工作区大小
- //任务栏在下面的高度
- int y = ::GetSystemMetrics(SM_CYSCREEN)-rt.Height();
- //上面
- int y = rt.top;
- // 左
- int y = rt.left;
- // 右
- int y = ::GetSystemMetrics(SM_CXSCREEN)-rt.Width();
2.得到高度,然后可判断位置
- CRect rect;
- CWnd *pWndPrev= FindWindow("Shell_TrayWnd", ""); // 调用本对象即this的Findwindow函数,返回窗口指针
- pWndPrev->GetWindowRect(&rect);
- //rect.bottom-rect.top 就是任务栏的高度
- if(rect.top>0) //下面
- if(rect.left>0) //左面
- 或者
- CWnd* p = NULL ;
- HWND hwnd = ::FindWindow("Shell_TrayWnd",NULL) ; // 调用公有的FindWindow函数,返回窗口句柄
- if(hwnd)
- {
- p = CWnd::FromHandle(hwnd) ;
- }
- p->GetWindowRect();//包含有宽度