松鼠的博客

导航

获取窗口最大化区域

void CMainFrame::GetFullViewRect(RECT &rt)
{
    rt.left
=0;
    rt.right
=800;
    rt.top
=0;
    rt.bottom
=600;
    HWND hwnd1
=0,hwnd2=0;
    hwnd1
=::GetDesktopWindow();
    
if(hwnd1==NULL) return;

    RECT rt_Desktop;
    ::GetWindowRect(hwnd1,
&rt_Desktop);
    
    hwnd2
=::FindWindow("Shell_TrayWnd",NULL);
    
if(hwnd2==NULL) return;

    RECT rt_TrayWnd;
    ::GetWindowRect(hwnd2,
&rt_TrayWnd);
    
if((rt_TrayWnd.bottom-rt_TrayWnd.top)<(rt_TrayWnd.right-rt_TrayWnd.left))
    
{
        
if((rt_Desktop.bottom-rt_TrayWnd.bottom)>0)
        
{
            rt.top 
= rt_TrayWnd.bottom;
            rt.left 
= rt_Desktop.left;
            rt.bottom 
= rt_Desktop.bottom;
            rt.right 
= rt_Desktop.right;
        }

        
else
        
{
            rt.top 
= rt_Desktop.top;
            rt.left 
= rt_Desktop.left;
            rt.bottom 
= rt_TrayWnd.top;
            rt.right 
= rt_Desktop.right;
        }

    }

    
else
    
{
        
if((rt_Desktop.right-rt_TrayWnd.right)>0)
        
{
            rt.top 
= rt_Desktop.top;
            rt.left 
= rt_TrayWnd.right;
            rt.bottom 
= rt_Desktop.bottom;
            rt.right 
= rt_Desktop.right;
        }

        
else
        
{
            rt.top 
= rt_Desktop.top;
            rt.left 
= rt_Desktop.left;
            rt.bottom 
= rt_Desktop.bottom;
            rt.right 
= rt_TrayWnd.left;
        }

    }


    
if((rt.right-rt.left)<800) rt.right=rt.left+800;
    
if((rt.bottom-rt.top)<600) rt.bottom=rt.top+600;
}

posted on 2009-07-07 10:54  Xproer-松鼠  阅读(240)  评论(0)    收藏  举报