我有一个(图表)控件,里面有大量数据(x曲线a~10' 000点)。我需要在不同的视图或窗口中显示具有相同数据的控件。
由于速度和一致性很重要(重绘时间约为150毫秒),我尝试在不同的视图或窗口中使用相同的(只读)控件实例。
这个计划似乎有效:
void CMyview::OnInitialUpdate()
{
..
if (NULL == m_pCurveTempCtrl)
{
m_pCurveTempCtrl = new CCurveCtrl;
..
}
void COtherView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView)
{
CWnd* m_pCurveCtrl = Pointer to CMyView::m_pCurveCtrl;
if (bActivate)
m_pCurveCtrl->SetParent(pActivateView);
else
m_pCurveCtrl->SetParent(pDeactiveView);
CFormViewEx::OnActivateView(bActivate, pActivateView, pDeactiveView);
}
但这是允许的吗?
答案 0 :(得分:1)
没有。如果需要显示两个视图会发生什么?只有一个人会有一个窗口......
Doc View架构非常适用于此。
将数据保留在文档中并使用不同的视图,这些视图使用文档中的相同数据池。