求助

wudeshou82666 2009-08-12 04:08:04
在文档视图模式下:
将视图分割为左右两部分,通过点击分割条实现隐藏和显示左边视图.
望高手指教,最好能有例子和源代码.谢谢!!!
...全文
89 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wudeshou82666 2009-08-14
  • 打赏
  • 举报
回复
MD,还是上不了图
wudeshou82666 2009-08-14
  • 打赏
  • 举报
回复
需要通过点击分割条上的特色区域来隐藏左边视图。CsplitterWnd类没有这样的特色区域。只有单单的一个分割条。

顶起,望高手指点

效果的图片:

MoXiaoRab 2009-08-13
  • 打赏
  • 举报
回复
上个图看看,找个免费空间传上去
wudeshou82666 2009-08-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tttyd 的回复:]
1.使用CsplitterWnd类切分视图
2.在你的命令响应函数中使用CSplitterWnd::SetColumnInfo函数设置视图的宽度,即用于隐藏、显示你需要的视图
[/Quote]
需要通过点击分割条上的特色区域来隐藏左边视图。CsplitterWnd类没有这样的特色区域。只有单单的一个分割条。不能上图啊,要是能看到图就可以表达我要的效果了
就想网络上看MSDN那样,左边视图很多选项,中间分割条,点击分割条中间可以隐藏左边,再点击则显示左边视图。就要这样的效果。。。
谢谢
哪位大哥能写个例子给我吗!!!
ydyn1988 2009-08-12
  • 打赏
  • 举报
回复
选择project 选项中的 Control 添加 Splitter 控件就行了
wu_qing_yun 2009-08-12
  • 打赏
  • 举报
回复
自己继承一个CSplitterWnd,然后重载鼠标点击消息,在里面写隐藏代码
副组长 2009-08-12
  • 打赏
  • 举报
回复
下面代码可以使左窗在关闭和打开之间切换,但是这里的关闭不是销毁左窗,而是最小化了,看看是不是你要求的。

CRect rect;
GetWindowRect( &rect );
if( m_bSplitterCreated ) // m_bSplitterCreated set in OnCreateClient
{
if( !m_bMinLeft )
{
m_wndSplitter.SetColumnInfo(0, 0, 0);
m_wndSplitter.SetColumnInfo(1, rect.Width(), 10);
m_wndSplitter.RecalcLayout();
}
else
{
m_wndSplitter.SetColumnInfo(0, 250, 10);
m_wndSplitter.SetColumnInfo(1, rect.Width()-250, 10);
m_wndSplitter.RecalcLayout();
}
m_bMinLeft = !m_bMinLeft;
}
MoXiaoRab 2009-08-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 shakeyou123 的回复:]
在MSDN中查下CsplitterWnd类就清楚了
[/Quote]
别那么懒
fengrx 2009-08-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tttyd 的回复:]
1.使用CsplitterWnd类切分视图
2.在你的命令响应函数中使用CSplitterWnd::SetColumnInfo函数设置视图的宽度,即用于隐藏、显示你需要的视图
[/Quote]
.
webing520 2009-08-12
  • 打赏
  • 举报
回复
Reset()
{
m_nRows = m_nMaxRows;
m_nCols = m_nMaxCols;

CWnd * pWnd;
int row, col;
for (row = 0; row < m_nRows; row++)
{
for (col = 0; col < m_nCols; col++)
{
pWnd = GetPane(row, col);
pWnd->ShowWindow(SW_SHOW);
}
}

}
HideCol(int col)
{
ASSERT_VALID(this);
ASSERT(m_nCols > 0);
ASSERT(col <= m_nCols);
SetActivePane(0, 0);
CWnd* pPane = GetPane(0, col);
if (pPane)
pPane->ShowWindow(SW_HIDE);
m_nCols--;
RecalcLayout();
}

HideSplitter()
{
m_cx=m_cxSplitterGap;//save previous cx amount of space between panes
m_cy=m_cxSplitterGap;//save previous cy
m_cxSplitterGap=1;
m_cySplitterGap=1;

// borders in client area
m_cxBorder = 1;
m_cyBorder = 1;
RecalcLayout();
}

m_wndSplitterLeft.Reset();
m_wndSplitterLeft.SetColumnInfo(0,0,0);
m_wndSplitterLeft.RecalcLayout();
RecalcLayout();
m_wndSplitterLeft.HideCol(0);
m_wndSplitterLeft.HideSplitter();
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tttyd 的回复:]
1.使用CsplitterWnd类切分视图
2.在你的命令响应函数中使用CSplitterWnd::SetColumnInfo函数设置视图的宽度,即用于隐藏、显示你需要的视图
[/Quote]

up
shakeyou123 2009-08-12
  • 打赏
  • 举报
回复
在MSDN中查下CsplitterWnd类就清楚了
雪影 2009-08-12
  • 打赏
  • 举报
回复
1.使用CsplitterWnd类切分视图
2.在你的命令响应函数中使用CSplitterWnd::SetColumnInfo函数设置视图的宽度,即用于隐藏、显示你需要的视图
wltg2001 2009-08-12
  • 打赏
  • 举报
回复
找一下切分视图就行了,主要就是CsplitterWnd类的应用

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧