在不同的视图或窗口中使用相同的控件实例

时间:2017-08-21 16:33:00

标签: charts mfc controls

我有一个(图表)控件,里面有大量数据(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);
}

但这是允许的吗?

1 个答案:

答案 0 :(得分:1)

没有。如果需要显示两个视图会发生什么?只有一个人会有一个窗口......

Doc View架构非常适用于此。

将数据保留在文档中并使用不同的视图,这些视图使用文档中的相同数据池。