Re: MDI - активное дочернее окно
От: Melamed Россия  
Дата: 01.10.09 12:46
Оценка:
Вместо

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>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.