Вместо
MDIGetActive();
используй
CMyView *CMainFrame::GetActiveView()
{
CFrameWnd *pFrame = GetActiveFrame();
if(pFrame != NULL)
{
return (CMyView*)pFrame->GetActiveView();
}
else
{
return NULL;
}
}
Здравствуйте, SpiritFire, Вы писали:
SF>Сколько ни ковырлся, не пойму, объясните, пожалуйста, что к чему.
SF>Есть MDI приложение, есть обработчик нажатия кнопки на тулбаре... Стараюсь получить текущее дочернее окно.
SF>SF>void CmainFrame::onPaintRectBullon()
SF>{
SF> CMDIChildWnd* current = MDIGetActive(); // тут всегда NULL
SF> GetActiveDocument(); // тут всегда access violation
SF> if ( current )
SF> current->CloseWindow();
SF> ::MessageBox(NULL, _T("123"), _T("123"), 0);
SF>}
SF>
SF>Или я дурак, или справка какая-то через **** у них, не пойму, как получить текущее дочернее окно.
SF>Вроде пример из MSDN:
SF>SF>void CMainFrame::OnViewChange(UINT nCmdID)
SF>// There is an ON_COMMAND_RANGE message map entry associated with
SF>// OnViewChange:
SF>// ON_COMMAND_RANGE(ID_VIEW_CHANGE1, ID_VIEW_CHANGE2, &OnViewChange)
SF>{
SF> CView* pViewAdd;
SF> CView* pViewRemove;
SF> CDocument* pDoc = GetActiveDocument();
SF> ...
SF>}
SF>