我之前在MFC应用程序中使用CSplitterWnd
,使用它的CreateView
函数。一切工作正常,但现在我想传递一个参数给我的视图的构造函数,所以我不能使用MFC动态对象创建(DECLARE_DYNCREATE
和IMPLEMENT_DYNCREATE
),因为它们需要一个空的构造函数。有没有办法在不使用(MFC)动态对象创建的情况下在CSplitterWnd中创建视图?
在互联网上搜索了一点后,我发现,看起来像这样的为例:
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CMyView), CSize(0,0), pContext);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CMyView), CSize(0,0), pContext);
m_pView0=(CMyView *)m_wndSplitter.GetPane(0,0);
m_pView1=(CMyView *)m_wndSplitter.GetPane(0,1);
这可能是一种解决方法(即:在CMyView
创建一个新的功能,让我指定我想要的),但是这将是丑陋的和容易出错的。任何人都知道是否有另一种方法可以做到这一点?
编辑:EE的回答后,添加更多的细节:
你的初始化方法的工作,但这种力量我记得调用初始化方法,但像你指出我可能不会创建这些意见很多权次,所以应该没问题。另一件我可能会喜欢的事情是自己管理视图的生命周期,所以再次使用CreateView是不可能的。
感谢
增加了一些信息,但你有一个好点我不认为我会创造这些意见很多时间。谢谢。 – n1ckp 2009-09-30 20:56:50
因为投票给你,虽然它不能完全解决我的需求,但在其他情况下,这可能是最好的答案。创建视图的好处只有一次。我没有经过这件事。 – n1ckp 2009-10-04 18:20:38
很高兴为您提供帮助,感谢您的支持。 – el2iot2 2009-10-05 14:26:58