VC獲得桌面工作區與工作列大小(寬度與高度)
阿新 • • 發佈:2019-01-03
獲得桌面工作區大小,即不包括工作列的大小,製作視窗全屏時經常用到,方法如下:
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();//包含有寬度
參考資料: