【发布时间】:2009-09-30 19:36:59
【问题描述】:
我以前在 MFC 应用程序中使用 CSplitterWnd,使用它的 CreateView 函数。一切正常,但现在我想将参数传递给视图的构造函数,因此我不能使用 MFC 动态对象创建(DECLARE_DYNCREATE 和 IMPLEMENT_DYNCREATE),因为它们需要一个空的构造函数。
在网上搜索了一下后,我找到了一个看起来像这样的例子:
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 是不可能的。
谢谢
【问题讨论】:
标签: c++ mfc csplitterwnd