切分窗口(CSplitterWnd)中如何动态的改变一边的视图?(或者用别的办法实现我的界面)谢谢 想要做成这样的界面,首先创建一个切分窗口,左边是CTreeView,右边可以是CListView,CFormView,CView等等。在点击左边树控件上面的不同选项时候,右边相应的显示不同视图。 这种界面可不可以不用切份窗口实现啊 谢谢大家 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以啊,点击左边树控件上面的不同选项,可以用ShowWindow(SW_NORMAL)来显示你想要显示的视图,其他不要显示的用ShowWindow(SW_HIDE) 谢谢你。 那我是不是应该创建多个视图,然后把它们都关联到该切份窗口的右视图啊,接着进行切换?怎么关联呢?用setactivepane? 但是看例子似乎只能关联一个视图啊,可以贴一下思路吗? // Create two views if (!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CLeftView), CSize(175,0), pContext)) { TRACE0("Failed to create CLeftView\n"); return -1; } if (!m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CRightView), CSize(0,0), pContext)) { TRACE0("Failed to create CRightView\n"); return -1; } 我上面说的并不是拆分窗口的思路,如果你要拆分窗口,可以考虑只用一个FormView,然后在上面放置ListCtrl和TreeCtrl,然后根据你的点击选择显示某一个控件或者隐藏某一个控件,当然这办法笨了一点,但如果控件不多的话,也是一个解决问题的办法。 可以临时杀了两个VIEW,然后再重新切分窗口(缺点是要记住左边视的状态,如果不要记就可以采用本法子。或是右边的视采用框架,先在其中全创建出所需要的视,再根据需要SHOW和HIDE即可 "右边的视采用框架,先在其中全创建出所需要的视,再根据需要SHOW和HIDE即可"可以说一下这个的具体思路吗? http://support.microsoft.com/support/kb/articles/q149/2/57.asp149257 - How to Replace a View in a Splitter Window 只要实现这种界面就行了 也不一定非要用切份窗口 我昨天在网上下在了两个例子都是关于SDI下的切份窗口如何进行切换的 --方法都是使用 CSplitterWnd.DeleteView,切换的时候先把视图删除掉,然后动态的创建新的视图 从而实现切换的效果 但是我觉得这种方法有一个缺点,如果我在我的视图中写了些东西(如果在CListView中写入了几行),删掉以后重新创建的话,这些东西就不见了。 所以我想使用 show hide 这样就不存在我写的内容丢失的问题 所以我想问一下,您的第二种思路的实现方法 谢谢 Data should be stored in DOCUMENT, not in VIEW 创建一个继承自framewnd的类,在切分窗口时直接强行把右边的PANE创建为这个框架,在框架中作个函数用于切换视,在CREATE时创建所有的视,并只设一个可见。 找到新的解决方法 不过还是谢谢 :jiangsheng(蒋晟.MSMVP2004Jan) :sinfee(口是心非) () 列表控件CListCtrl如何能让同一列的不同行分别是CEdit和CCombox? 请教:VC写好的程序,可执行的 .EXE 软件,是否可以改成B/S结构的网络系统。 求救!!为何在别的机子运行不了??? 哪有《Windows防火墙与网络封包截获技术 》的电子版 紧急呼救!!! 最近总是遇到IE控件的问题……唉 如何将一个整数除以100后得到小数转成CString型,具体请看 请问用VC实现的短信功能的程序哪里有下载的? 键盘钩子函数中调用其他程序的问题 这样添加动态菜单为何有错? 有人了解SIP协议吗?请不吝赐教,多谢! CreateEvent()函数怎么用?
那我是不是应该创建多个视图,然后把它们都关联到该切份窗口的右视图啊,接着进行切换?怎么关联呢?用setactivepane?
但是看例子似乎只能关联一个视图啊,可以贴一下思路吗? // Create two views
if (!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CLeftView),
CSize(175,0), pContext))
{
TRACE0("Failed to create CLeftView\n");
return -1;
} if (!m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CRightView),
CSize(0,0), pContext))
{
TRACE0("Failed to create CRightView\n");
return -1;
}
或是右边的视采用框架,先在其中全创建出所需要的视,再根据需要SHOW和HIDE即可
149257 - How to Replace a View in a Splitter Window
都是关于SDI下的切份窗口如何进行切换的 --方法都是使用 CSplitterWnd.DeleteView,切换的时候先把视图删除掉,然后动态的创建新的视图 从而实现切换的效果
但是我觉得这种方法有一个缺点,如果我在我的视图中写了些东西(如果在CListView中写入了几行),删掉以后重新创建的话,这些东西就不见了。
所以我想使用 show hide
这样就不存在我写的内容丢失的问题 所以我想问一下,您的第二种思路的实现方法 谢谢
在框架中作个函数用于切换视,在CREATE时创建所有的视,并只设一个可见。