2017-08-21 9 views
1

私は大きなデータ(x曲線は〜10'000ポイント)を内部に持つ(チャート)コントロールを持っています。私は異なるビューまたはウィンドウで同じデータでコントロールを表示する必要があります。別のビューまたはウィンドウで同じコントロールインスタンスを使用する

スピードと一貫性の問題(約150msの再描画)があるので、私は対照的なビューやウィンドウで同じ(読み取り専用の)コントロールインスタンスを使用しようとしました。

この方式では動作しているようです:

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

いいえ両方のビューを表示する必要がある場合はどうなりますか? 1つだけがウィンドウを持っています...

Doc Viewアーキテクチャはこれに最適です。

ドキュメントにデータを保存し、ドキュメントから同じデータプールを使用するさまざまなビューを使用します。

+0

はいDoc Viewアーキテクチャです。 ただし、DocのデータプールはControlデータプールと互換性がありません。 (std :: vectorとCArray) –

+0

:)それを変更する...または、配列のDocにユニバーサルconstアクセサー関数を組み込む方がよい。データをコピーする必要はありません。 – xMRi

+0

データのコピーが遅い場合。それをしないでください。これはXYの問題であるシーム...;) – xMRi

関連する問題