得到桌面工做区大小,即不包括任务栏的大小,制做窗口全屏时常常用到,方法以下:函数
RECT rt;
SystemParametersInfo(SPI_GETWORKAREA,0,(PVOID)&rt,0);this
得到任务栏高度与宽度方法有二:指针
1.判断位置对象
RECT rt;方法
SystemParametersInfo(SPI_GETWORKAREA, 0, &rt, 0) // 得到工做区大小top
//任务栏在下面的高度 工作
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();//包含有宽度