SDI приложение с несколькими активными представлениями
Привет,
Я создаю пример обучающего приложения для создания нескольких активных представлений одновременно в SDI. Проблема, с которой я сталкиваюсь, заключается в том, что, хотя я переопределил OnDraw в своем втором классе представлений, мой вызов SetModifiedFlag(true) и UpdateAllViews () не вызывает вторые представления OnDraw(). Я отладил в UpdateAllviews и увидел, что OnUpdate моего второго представления успешно вызывается со всеми параметрами 0. Чего мне не хватает? пожалуйста, может ли кто-нибудь помочь
Код выглядит примерно так
CMainWnd::CMainWnd() { m_pSecondWnd = new CSecondaryWnd(); m_pSecondWnd->Create( 0, L"Second Window", WS_OVERLAPPEDWINDOW ); } void CMainWnd::CreateNewView( CRuntimeClass* pView, CFrameWnd* pNewWnd, UINT ID) { CView* pNewView = NULL; pNewView = (CView*)pView->CreateObject(); CCreateContext context; context.m_pCurrentDoc = GetActiveDocument(); pNewView->Create( 0, 0, AFX_WS_DEFAULT_VIEW, rectDefault, pNewWnd, 1 , &context ); pNewView->OnInitialUpdate(); ((CSecondaryWnd*)pNewWnd)->ShowWindow( SW_RESTORE ); pNewView->ShowWindow( SW_RESTORE ); pNewWnd->UpdateWindow(); } void CMainWnd::OnTimer( UINT_PTR nIDEvent ) { switch(nIDEvent) { case ONE_SECOND_TIMER: { CSampleDocument* pDoc = (CSampleDocument*)GetActiveDocument(); pDoc->SetModifiedFlag(); pDoc->UpdateAllViews( NULL ); //Invalidate(); trail break; } } } Sample View 2 class: IMPLEMENT_DYNCREATE( CSampleView2, CView ) BEGIN_MESSAGE_MAP( CSampleView2, CView ) END_MESSAGE_MAP() CSampleView2::CSampleView2() { } CSampleView2::~CSampleView2() { } void CSampleView2::OnDraw( CDC* pDc ) { int a = 10; pDc->TextOut( 100, 100, L"This", 5 ); } Sample View 1 Class: IMPLEMENT_DYNCREATE( CSampleView1, CView ) BEGIN_MESSAGE_MAP( CSampleView1, CView ) ON_COMMAND( ID_VIEW_CREATE, OnViewCreate ) END_MESSAGE_MAP() CSampleView1::CSampleView1() { } CSampleView1::~CSampleView1() { } void CSampleView1::OnDraw( CDC* pDc ) { pDc->TextOut( 100, 100, L"This", 5 );int a = 10; }
Что я уже пробовал:
Отладил UpdateAllView, и я мог видеть, что при циклическом просмотре различных представлений мой второй вид calss и его OnUpdate успешно вызываются.