要将CTabCtrl全屏显示(隐藏掉标签)想到了两个办法,一个是CTabCtrl隐藏标签,可是不知道如何隐藏.试过了N种办法,比如
m_tab.SetPadding(-1000, -1000)
m_ta.SetItemSize(0, 0)
没有效果.第二个办法是视觉欺骗
// 下面函数将窗口最大化,而且使用负数的top来实现隐藏,但是MoveWindow和SetWindowPos高度有限制?
就算吧screenHeight设置成99999也是一样的高度.底部缺少N个像素才能够满屏显示.
MoveWindow(0, -cx, screenWidth, screenHeight);
-cx是CTabCtrl的高度.

解决方案 »

  1.   

    MoveWindow(0, -cy, screenWidth, screenHeight+cy);
      

  2.   

    忘记了,代码是有加上被移出的部分的高度.还是没有效果.
    就是将screenHeight设置为99999也没有效果,底部还是少了十几个像素.确定顶部是对齐了.底部少了.
      

  3.   

    试试MoveWindow无法确定高度.并且就算screenHeight将数值设置为99999也没有效果(底部还是空白了一块,确定在top已经移动到位的情况下)
      

  4.   

    int cx = GetSystemMetrics(SM_CXSCREEN);
    int cy = GetSystemMetrics(SM_CYSCREEN);
    MoveWindow/SetWindowPos(...);
      

  5.   

    写测试代码的时候,MoveWindow/SetWindowPos后的窗口位置在任务栏前面(挡住了任务栏)
    而项目的代码运行后,窗口在任务栏的后面(被任务栏挡住).之前移除了一些风格,比如ModifyStyle( WS_CAPTION | WS_THICKFRAME | WS_SYSMENU, 0 );MoveWindow需要确定风格?为什么还有几个像素没被覆盖到 - -
      

  6.   

    全屏代码如下:    // 恢复窗口还是最大化显示
        if ( !m_bIsFullScreen )
        {
            // 保存窗口的位置
            GetWindowRect( m_rcFrame );        // 获取屏幕大小
            int cx = GetSystemMetrics( SM_CXSCREEN );
            int cy = GetSystemMetrics( SM_CYSCREEN );        // 隐藏掉头部控件
            int nHeadHeight = m_wndTabView.GetHdrCtrlHeight();        int cxBorder = ::GetSystemMetrics(SM_CXBORDER) * 2;
            int cyBorder = ::GetSystemMetrics(SM_CYBORDER) * 2;        // 去掉风格
            ModifyStyle( WS_CAPTION | WS_THICKFRAME | WS_SYSMENU, 0 );        // 隐藏工具栏和状态栏
            ::ShowWindow(m_hWndStatusBar, SW_HIDE);        // 隐藏全部的Rebar窗口
            CReBarCtrl rebar = m_hWndToolBar;
            for ( UINT nIndex = 0; nIndex < rebar.GetBandCount(); ++nIndex )
            {
                rebar.ShowBand(nIndex, FALSE);
            }        // 最大化显示窗口
            MoveWindow( 0, -nHeadHeight - cyBorder, cx + cxBorder, cy + nHeadHeight + cyBorder * 4);
        }
        else
        {
            // 复原浏览器窗口
            ModifyStyle(0, WS_CAPTION | WS_THICKFRAME | WS_SYSMENU );
            ::ShowWindow( m_hWndStatusBar, SW_SHOWNOACTIVATE );
            CReBarCtrl rebar = m_hWndToolBar;
            for ( UINT nIndex = 0; nIndex < rebar.GetBandCount(); ++nIndex )
            {
                rebar.ShowBand( nIndex, TRUE );
            }        MoveWindow( m_rcFrame );
        }运行后,窗口没有覆盖到全屏(底部还有10几个像素高度没有被覆盖到)
      

  7.   

    全屏代码如下:    // 恢复窗口还是最大化显示
        if ( !m_bIsFullScreen )
        {
            // 保存窗口的位置
            GetWindowRect( m_rcFrame );        // 获取屏幕大小
            int cx = GetSystemMetrics( SM_CXSCREEN );
            int cy = GetSystemMetrics( SM_CYSCREEN );        // 隐藏掉头部控件
            int nHeadHeight = m_wndTabView.GetHdrCtrlHeight();        int cxBorder = ::GetSystemMetrics(SM_CXBORDER) * 2;
            int cyBorder = ::GetSystemMetrics(SM_CYBORDER) * 2;        // 去掉风格
            ModifyStyle( WS_CAPTION | WS_THICKFRAME | WS_SYSMENU, 0 );        // 隐藏工具栏和状态栏
            ::ShowWindow(m_hWndStatusBar, SW_HIDE);        // 隐藏全部的Rebar窗口
            CReBarCtrl rebar = m_hWndToolBar;
            for ( UINT nIndex = 0; nIndex < rebar.GetBandCount(); ++nIndex )
            {
                rebar.ShowBand(nIndex, FALSE);
            }        // 最大化显示窗口
            MoveWindow( 0, -nHeadHeight - cyBorder, cx + cxBorder, cy + nHeadHeight + cyBorder * 4);
        }
        else
        {
            // 复原窗口
            ModifyStyle(0, WS_CAPTION | WS_THICKFRAME | WS_SYSMENU );
            ::ShowWindow( m_hWndStatusBar, SW_SHOWNOACTIVATE );
            CReBarCtrl rebar = m_hWndToolBar;
            for ( UINT nIndex = 0; nIndex < rebar.GetBandCount(); ++nIndex )
            {
                rebar.ShowBand( nIndex, TRUE );
            }        MoveWindow( m_rcFrame );
        }运行后,窗口没有覆盖到全屏(底部还有10几个像素高度没有被覆盖到)
      

  8.   

    http://wenku.baidu.com/view/a02e4bf8aef8941ea76e052c.html
      

  9.   

    http://wenku.baidu.com/view/a02e4bf8aef8941ea76e052c.html
      

  10.   

    经过测试发现,WIN7的窗口最高宽度为屏幕的高度..不管如何MoveWindow都是没有效果的.
      

  11.   

    如果无法改变窗口的高度,只能隐藏/移除CTabCtrl的标签头了.
    请教大伙,如何才能够隐藏/移除CTabCtrl的标签头呢?
    谢谢