求助 在文档视图模式下:将视图分割为左右两部分,通过点击分割条实现隐藏和显示左边视图.望高手指教,最好能有例子和源代码.谢谢!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 找一下切分视图就行了,主要就是CsplitterWnd类的应用 1.使用CsplitterWnd类切分视图2.在你的命令响应函数中使用CSplitterWnd::SetColumnInfo函数设置视图的宽度,即用于隐藏、显示你需要的视图 在MSDN中查下CsplitterWnd类就清楚了 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(); 下面代码可以使左窗在关闭和打开之间切换,但是这里的关闭不是销毁左窗,而是最小化了,看看是不是你要求的。 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; } 自己继承一个CSplitterWnd,然后重载鼠标点击消息,在里面写隐藏代码 选择project 选项中的 Control 添加 Splitter 控件就行了 需要通过点击分割条上的特色区域来隐藏左边视图。CsplitterWnd类没有这样的特色区域。只有单单的一个分割条。不能上图啊,要是能看到图就可以表达我要的效果了就想网络上看MSDN那样,左边视图很多选项,中间分割条,点击分割条中间可以隐藏左边,再点击则显示左边视图。就要这样的效果谢谢哪位大哥能写个例子给我吗!!! 按钮被遮挡问题 获得系统第二天的时间 vc 在单文档里如何控制View窗体的大小 发现微软一个bug.(Date Time Picker控件的焦点) 有什么好的方法解决,请教高手 请问谁有COM+ADO的管理系统原代码?能否给我一份,超急,时刻在线等待.谢谢谢谢 高分求源程序,分不够再加 莱鸟:请问怎么隐藏子对话框? 怎么从传感器连续读入数据 什么词典软件可以在acrabat reader下屏幕抓词翻译 请教 MFC全局事件触发问题 剪切板改变 用vc如何实现点击图片中某点就能显示出数据库中相关信息(类似电子地图) 不安装EXCEL直接用excel9.cpp和excel9.h不可以吗?
2.在你的命令响应函数中使用CSplitterWnd::SetColumnInfo函数设置视图的宽度,即用于隐藏、显示你需要的视图
{
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();
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;
}
就想网络上看MSDN那样,左边视图很多选项,中间分割条,点击分割条中间可以隐藏左边,再点击则显示左边视图。就要这样的效果
谢谢
哪位大哥能写个例子给我吗!!!