要将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的高度.
m_tab.SetPadding(-1000, -1000)
m_ta.SetItemSize(0, 0)
没有效果.第二个办法是视觉欺骗
// 下面函数将窗口最大化,而且使用负数的top来实现隐藏,但是MoveWindow和SetWindowPos高度有限制?
就算吧screenHeight设置成99999也是一样的高度.底部缺少N个像素才能够满屏显示.
MoveWindow(0, -cx, screenWidth, screenHeight);
-cx是CTabCtrl的高度.
解决方案 »
- 用MFC做的俄罗斯方块经常会APPCRASH
- 关于VirtualGridCtrl表格的填值问题
- 急~~~~~一个关于界面的设计问题
- 写了一个CMenu类却不能对他进自画,不知错到哪高手帮忙啊!!!
- 如何用去获得另外一个窗口内的控件信息?(比如EDIT等)
- 请高人指点:进程地址空间和虚拟内存的到底是什么关系?好困惑
- 各位高手!!请叫一个问题!!在ActiveX控件里传回调函数,可能有点棘手,对我来说!!
- 如何获得字体的宽度
- 写的dll无法识别(调用它的系统提示找不到这个dll)
- 它捕获的是哪个消息?
- vc++如何做出苹果风格界面
- 请问为什么在VS2008中对话框上右键菜单中的“添加事件处理程序”是灰色的,无法点击
就是将screenHeight设置为99999也没有效果,底部还是少了十几个像素.确定顶部是对齐了.底部少了.
int cy = GetSystemMetrics(SM_CYSCREEN);
MoveWindow/SetWindowPos(...);
而项目的代码运行后,窗口在任务栏的后面(被任务栏挡住).之前移除了一些风格,比如ModifyStyle( WS_CAPTION | WS_THICKFRAME | WS_SYSMENU, 0 );MoveWindow需要确定风格?为什么还有几个像素没被覆盖到 - -
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几个像素高度没有被覆盖到)
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几个像素高度没有被覆盖到)
请教大伙,如何才能够隐藏/移除CTabCtrl的标签头呢?
谢谢