VC获得桌面工作区与任务栏大小(宽度与高度)

2013/12/26 10:26
阅读数 785

获得桌面工作区大小,即不包括任务栏的大小,制作窗口全屏时经常用到,方法如下:

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


展开阅读全文
打赏
0
2 收藏
分享
加载中
更多评论
打赏
0 评论
2 收藏
0
分享
返回顶部
顶部