CSplitterWnd怎么用

我先用AppWizard创建了一个单文档框架,又在CFramWnd中添加了一个CSplitterWnd的对象,然后重载OnCreatClient中调用CreateStadic(tihs,1,2);但build后不能分割,为什么,我是菜鸟,请详细,谢谢。 CSplitterWnd怎么用 相关解决方法:1、
不是光CreateStatic就行的,还要建立两个视图才行. CMainFrame::OnCreateClient(...) { m_wndSplitter.CreateStatic(this,1,1); m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CView1),CSize(200,200),pContext); m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CView2),CSize(200,200),pContext); return TRUE; //这里一定不要调用return CFrameWnd::OnCreateClient } 2、
不行啊, CView1是不是从CMyAppView继承来的新类,我按你的build后是这样: 'classCView1' : undeclared identifier 'classCView1' : is not a member of 'CView1' 是什么意思啊,谢谢你。为什么一定不能调用 return CFrameWnd::OnCreateClient(); 3、
高手在哪????????????? 4、
我忘记说明了,如果要让左右两个视图不同的话在程序里面就必须有两个不同的视图类,appWizard给你生成了一个,你自己还得再加一个.还有,你要把我的代码中的CView1和CView2改成你生成的CView类的名称,不要全盘照般哦.当然如果你想让两个视图类基于同一个类也可以,只要把 CView2改成CView1就行了. 你可以试试看return CFrameWnd::OnCreateClient,这样的效果是FrameWnd不承认你生成的SplitterWnd,而是自己又加上了一个默认的 View,所以你的辛苦就白费了. 5、
YuHao 说的CView1, CView2 是指你可以用任何一种视图类来代替CView1,CView2 包括你继承下来的视图类,要用什么视图得看你自己的需要,比如CView1换为CListView,CView2换为CFormView.如果调用 CFrameWnd::OnCreateClient(),那么会创建一个只具有单视图CMyAppView 的程序,你的CSplitterWnd将不起作用。 6、
不行,我已经把CView1和2换成我自己的view了,是不是还有什么宏要使用啊,还有用向导的时候我没有选切分窗口,是不是这个原因。 7、
关注 8、
你说明白是怎么个不行法吗,是编译错误还是运行错误?要在MainFrm.cpp里面包含你的两个View的头文件别忘了,即使向导里面没有选切分窗口也不要紧,只要在MainFrame的定义里面有个CSplitterWnd的成员变量就行了. 如果还有问题的话,最好把出错的地方和错误信息说的详细一点. 9、
是不能编译,我对新生成的两个视类什么都没做,视类的头文件也include在framw中了。要不我把程序给你,好吗? 10、
使用CreateStatic创建静态分割,使用CreateView创建视最后使用CSplitterWnd::RecalcLayout();重新显示分割窗口。 11、
使用CreateStatic创建静态分割,使用CreateView创建视最后使用CSplitterWnd::RecalcLayout();重新显示分割窗口。 12、
还是编译错误,谁来救救这只菜鸟。 13、
关注 14、
要么你把程序mail给我吧Hao.Yu@yeah.net,我来看看 15、
ok 16、
菜鸟在听 17、CSplitterWnd怎么用

推荐解答: 你的问题解决了!唉,问题还真不少. 1.在SplitterwndView.h头加上#include "splitterwnddoc.h". 2.这是最重要的: 在View1和View2的声明中加入: DECLARE_DYNCREATE(CView1) // and DECLARE_DYNCREATE(CView2) 在两个类的源文件中,不属于任何函数的地方加入: IMPLEMENT_DYNCREATE(CView1,CSplitterwndView) IMPLEMENT_DYNCREATE(CView2,CSplitterwndView) 其实只要看到象classCView1:not found这一类的编译错误就能明白是怎么回事了,或者你去看看DECLARE_DYNCREATE这个宏是怎么定义的.在候捷的<<深入浅 出MFC>>里面对这个问题说的很清楚,你有兴趣的话也可以看看. 3.你犯了一个低级错误:CView2你写成CVew2了. 4.在CMainFrameWnd::OnCreateClient里面,不需要调用CSplitterWnd::RecalcLayout,即使调用, 也应该是m_wndSplitter.RecalcLayout();这样的形式.除非是静态函数,否则一个类不能用::分辨符调用另一个类的成员函 数.RecalcLayout在这里是不需要的,因为框架在第一次显示出来的时候会自动调整. 18、 YuHao()兄真是好人! 19、 同意

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值