AfxGetApp() возвращает NULL в диалоге
От: gok Россия  
Дата: 26.02.15 00:35
Оценка:
Простейший диалог: лист, текст и 2 кнопочки Ок и Закрыть.
Создан в студии 9.0 для 64-бит.

Почему в дебаге pApp всегда NULL, а в релизе работает нормально?

ctor {
CWinApp* pApp = AfxGetApp();
if ( pApp )
   m_hIcon = pApp->LoadIcon(IDR_MAINFRAME);
...
}

Вследствии чего m_hIcon не загружается и приложение отваливается в другом месте:
LRESULT CWnd::OnNTCtlColor(WPARAM wParam, LPARAM lParam) {
ASSERT(ctl.nCtlType <= CTLCOLOR_STATIC); ...}

Call Stack: все еще в OnInitDialog().
gok
Re: AfxGetApp() возвращает NULL в диалоге
От: SаNNy Россия  
Дата: 26.02.15 04:25
Оценка:
Здравствуйте, gok, Вы писали:

gok>Простейший диалог: лист, текст и 2 кнопочки Ок и Закрыть.

gok>Создан в студии 9.0 для 64-бит.

gok>Почему в дебаге pApp всегда NULL, а в релизе работает нормально?

NULL может возвращать, если главное окно не было до конца инициализировано
Отредактировано 26.02.2015 4:26 SаNNy . Предыдущая версия .
Re[2]: AfxGetApp() возвращает NULL в диалоге
От: gok Россия  
Дата: 26.02.15 15:53
Оценка:
Здравствуйте, SаNNy, Вы писали:

SNN>Здравствуйте, gok, Вы писали:


gok>>Простейший диалог: лист, текст и 2 кнопочки Ок и Закрыть.

gok>>Создан в студии 9.0 для 64-бит.

gok>>Почему в дебаге pApp всегда NULL, а в релизе работает нормально?

SNN>NULL может возвращать, если главное окно не было до конца инициализировано

Это очевидно, но какая может быть разница debug <-> release?
gok
Re[3]: AfxGetApp() возвращает NULL в диалоге
От: SаNNy Россия  
Дата: 26.02.15 16:23
Оценка:
Здравствуйте, gok, Вы писали:

gok>Это очевидно, но какая может быть разница debug <-> release?

Ну в релизе код оптимизирован, инициализация может происходить быстрее.
Покажите код, тогда можно будет предметно разговаривать.
Re: AfxGetApp() возвращает NULL в диалоге
От: VladFein США  
Дата: 26.02.15 17:03
Оценка:
Здравствуйте, gok, Вы писали:

gok>Простейший диалог: лист, текст и 2 кнопочки Ок и Закрыть.

gok>Создан в студии 9.0 для 64-бит.
Диалог сгенерирован студией? Или самодельный?

gok>Почему в дебаге pApp всегда NULL, а в релизе работает нормально?

Потому что дебаг и релиз — разные программы.

gok>
gok>ctor {
gok>CWinApp* pApp = AfxGetApp();
gok>

Чей ctor? Диалога? А ctor базового класса вызывался?

gok>Вследствии чего m_hIcon не загружается и приложение отваливается в другом месте:

Приложение без иконы не должно "отваливаться".

gok>Call Stack: все еще в OnInitDialog().

CDialog::OnInitDialog() вызывался?
Re[4]: AfxGetApp() возвращает NULL в диалоге
От: VladFein США  
Дата: 26.02.15 17:05
Оценка:
Здравствуйте, SаNNy, Вы писали:

SNN>Ну в релизе код оптимизирован, инициализация может происходить быстрее.


Тогда просто должно быстрее "отвалиться"?
Re: AfxGetApp() возвращает NULL в диалоге
От: gok Россия  
Дата: 31.03.15 14:54
Оценка: 1 (1)
Здравствуйте, gok, Вы писали:

gok>Простейший диалог: лист, текст и 2 кнопочки Ок и Закрыть.

gok>Создан в студии 9.0 для 64-бит.

gok>Почему в дебаге pApp всегда NULL, а в релизе работает нормально?


Вопрос закрыт: была попытка помирить статические биб-ки скомпилированные на разных (старых) студиях
gok
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.