得到桌面工做區大小,即不包括任務欄的大小,製做窗口全屏時常常用到,方法以下:函數
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();//包含有寬度