1. 程式人生 > >VC獲得桌面工作區與工作列大小(寬度與高度)

VC獲得桌面工作區與工作列大小(寬度與高度)

 

獲得桌面工作區大小,即不包括工作列的大小,製作視窗全屏時經常用到,方法如下:

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();//包含有寬度

參考資料: