隐藏、展开对话框指定的区域

原创 2017年01月03日 14:17:08

void ShowArea( CDialog *pDialog, CRect rectHide )
{
    CWnd *pWnd = pDialog->GetWindow( GW_CHILD );
     
    while( pWnd )
    {
        CRect rect;
         
        pWnd->GetWindowRect ( &rect );
        pDialog->ScreenToClient( &rect );
         
        // 显示
        if ( rect.top >= rectHide.top && rect.left >= 1000 )
        {           
            rect.OffsetRect( -1000, 0 );
            pWnd->MoveWindow( rect );
             
        }
        else
        {
            // 下移
            if ( rect.top >= rectHide.top)
            {
                rect.OffsetRect( 0, rectHide.Height() );
                pWnd->MoveWindow( rect );
            }           
             
        }       
         
        pWnd = pWnd->GetWindow( GW_HWNDNEXT );       
    }
     
    CRect rectDialog;
    pDialog->GetWindowRect( &rectDialog );
    rectDialog.bottom += rectHide.Height();
     
    pDialog->MoveWindow( rectDialog );
     
}
 
void HideArea( CDialog *pDialog, CRect rectHide )
{
    CWnd *pWnd = pDialog->GetWindow( GW_CHILD );
     
    while( pWnd )
    {
        CRect rect;
         
        pWnd->GetWindowRect ( &rect );
        pDialog->ScreenToClient( &rect );
         
        // 隐藏
        if ( rect.top >= rectHide.top && rect.bottom <= rectHide.bottom )
        {
            //    pWnd->ShowWindow( SW_HIDE );
            rect.OffsetRect( 1000, 0 );
            pWnd->MoveWindow( rect );
 
        }
        else
        {
            // 上移
            if ( rect.top >= rectHide.bottom)
            {
                rect.OffsetRect( 0, -rectHide.Height() );
                pWnd->MoveWindow( rect );
            }           
 
        }       
         
        pWnd = pWnd->GetWindow( GW_HWNDNEXT );       
    }
 
    CRect rectDialog;
    pDialog->GetWindowRect( &rectDialog );
    rectDialog.bottom -= rectHide.Height();
     
    pDialog->MoveWindow( rectDialog );
 
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

深入浅出CChart 每日一课——快乐高四第七课 铁蛋的竹马,返璞归真之对话框窗口多区域绘图

上一课笨笨给大家介绍的是在普通窗口上多区域绘图,本课将介绍对话框下的情形。由于对话框的消息循环和普通窗口有一些区别,所以在具体操作上略有不同,下面的处理过程可以供大家参考。 第一步,打开VC,建立一个...
  • baita96
  • baita96
  • 2015年07月25日 17:35
  • 1467

设置文件对话框中的文件名显示区域不可编辑

package com.test.swing; import java.awt.Component; import javax.swing.JComponent; import javax.swi...

MFC对话框-重绘非客户端区域(标题栏)

某些情况下需要在对话框标题栏上添加按钮,在此mark下: 环境:win7 + vs2008 + sp1 项目:MFC对话框 步骤:     1.  重写方法:DefWindowProc      ...

javascript 隐藏/显示指定的区域附HTML元素【legend】用法

javascript code: 代码 复制代码 代码如下: function expandOther(el, el2) { whichEl = document.getElemen...

关于如何让SlidingDrawer在展开后,滑动内容区域可回抽屉。

如过程图: 内容区域是一个可滑动区域(内容会超过1屏幕),业务需求是: 当内容为顶端时,向下滑动可以使得抽屉收回。 这个任务乍看起来很麻烦,其实很简答。当然这个简单是相对于找到好的办法去解决该...
  • Jack_l1
  • Jack_l1
  • 2013年07月16日 13:19
  • 2576
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:隐藏、展开对话框指定的区域
举报原因:
原因补充:

(最多只允许输入30个字)