Определить "готово" ли MainFrame
От: FLY  
Дата: 26.08.04 13:44
Оценка:
В OnSize класса CView потребовалось обратиться к CMainFrame. Но эта функция вызывается еще и до того как CView и CMainFrame слинкуются и по этому уже при запуске выдает ошибку. Как определить можно ли в данный момент обратиться к объекту или еще нет?
Не хотелось бы вводить какие-то глобальные переменные для проверки. Может есть какая функция дающая зеленый свет?
Re: Определить "готово" ли MainFrame
От: Crypto Украина  
Дата: 26.08.04 14:06
Оценка:
Здравствуйте, FLY, Вы писали:

FLY>В OnSize класса CView потребовалось обратиться к CMainFrame. Но эта функция вызывается еще и до того как CView и CMainFrame слинкуются и по этому уже при запуске выдает ошибку. Как определить можно ли в данный момент обратиться к объекту или еще нет?


Если имеются ввиду проблемы с тем, что окна еще не созданы, то поможет проверка IsWindow(YourClass->GetSafeHwnd())
... << RSDN@Home 1.1.3 stable >>
Re: Определить "готово" ли MainFrame
От: kmn Украина  
Дата: 26.08.04 14:21
Оценка:
Здравствуйте, FLY, Вы писали:

FLY>В OnSize класса CView потребовалось обратиться к CMainFrame. Но эта функция вызывается еще и до того как CView и CMainFrame слинкуются и по этому уже при запуске выдает ошибку. Как определить можно ли в данный момент обратиться к объекту или еще нет?

FLY>Не хотелось бы вводить какие-то глобальные переменные для проверки. Может есть какая функция дающая зеленый свет?

Где и как вы их линкуете?

void CMyView::OnSize(...)
{
    CMainFrame * pFrame = STATIC_DOWNCAST(CMainFrame, GetParentFrame());
    ....
}
Re: Определить "готово" ли MainFrame
От: Myk Украина  
Дата: 26.08.04 15:13
Оценка:
AfxGetMainWnd()
Re: Определить "готово" ли MainFrame
От: NavuhodonosoR Россия  
Дата: 26.08.04 17:32
Оценка:
Здравствуйте, FLY, Вы писали:

FLY>В OnSize класса CView потребовалось обратиться к CMainFrame. Но эта функция вызывается еще и до того как CView и CMainFrame ...


Что-то не в порядке в архитектуре
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.