Member 13460634 Ответов: 1

Как отправить сообщение из cleftframe для дочерних окон в MDI


Я хочу отправить сообщение на дочерних окон от CLeftFrame для отображения данных на элемент управления "дерево", а как назвать вид переключатель дочерних окон

Что я уже пробовал:

//In FormLeft
void CFormLeft::OnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);

	*pResult = 0;
	m_TreeCtrl->SendMessage(WM_COMMAND, wParam, lParam);
}


//дочерние фреймы

CView* CSDISplitDoc::SwitchToView ( CView* pNewView )
{

DIFrameWnd* pMainWnd = (CMDIFrameWnd*)AfxGetMainWnd();

    CMDIChildWnd* pChild = (CMDIChildWnd*)pMainWnd->MDIGetActive();

   // Get the active view attached to the active MDI child window.
   CView* pOldActiveView = pChild->GetActiveView();


   CSplitterWnd* pSplitter = (CSplitterWnd *)pOldActiveView->GetParent();
   int row, col;
   ASSERT(pSplitter->IsChildPane(pOldActiveView, row, col));

   // set flag so that document will not be deleted when view is destroyed
   m_bAutoDelete = FALSE;    

   // Dettach existing view
   RemoveView(pOldActiveView);

   // set flag back to default 
   m_bAutoDelete = TRUE;
 
   
   ::SetWindowLong(pOldActiveView->m_hWnd, GWL_ID, 0);
   ::SetWindowLong(pNewView->m_hWnd, GWL_ID, pSplitter->IdFromRowCol(row, col));

  
   pNewView->ShowWindow(SW_SHOW);
   pOldActiveView->ShowWindow(SW_HIDE);

     AddView(pNewView);


   pSplitter->GetParentFrame()->SetActiveView(pNewView);
   
   pSplitter->RecalcLayout(); 
   pNewView->SendMessage(WM_PAINT); 

   return pOldActiveView;
}

1 Ответов

Рейтинг:
0

Richard MacCutchan

Мы уже говорили вам в двух предыдущих постах этого вопроса, что левое окно должно будет использовать SendMessage, чтобы вызвать событие с правым окном.