MFC глючит!
в обработчике нажатия кнопки в диалоговом окне я получаю временный указатель на объект класса CStatic. Но вот в чем закавырка: я не могу его получить, потому что член-функция GetDlgItem() генерирует исключение. Я проверил все досконально и выяснил, что исключение (Unknown exception in MFC42.dll. Address 0x00000005) возникает из-за того, что поле кдасса CWnd::m_hWnd не инициализировано, более того, при входе в эту функцию-обработчик значение этого поля не определено (точнее, отладчик не может его вычислить). Можно подумать, что окно еще не существует, но это обсурд: оно ведь уже обрабатывало другие сообщения! К тому же, почему-то, в других функциях аналогичный и такой же код работает правильно. В чем дело? Я пользуюсь MSVC++ 6.0, но в Borland C++ все фто работает на ура. Это приводит меня к выводу, что виноват компилятор MS. Препод в институте говорит, что компиляторы BC и VC настолько различны, что не будут правильно компилировать програииы. Это опять бред. Ведб все примеры программ для Windows из комплектв BC майкрософтовские. И они работают! В чем дело?
Мона кода немного выложить?
Как же он не инициализируется, если окно уже создано и его оконная функция обрабатывает сообщения. Я спеуиально проверял, например, в обработчике ON_WM_SHOWWINDOW дескриптор определен. Но вся петрушка в том, что при попытке обращения к полю m_hWnd происходит исключение в библиотеке MFC42.dll. Ошибка конкретно возникает в методе обработки сообщения нажатия кнопки ON_BN_CLICKED. А других обработчиках все работает правильно. Более того, в MSVC++ 5.0 тоже все нориально.
[EMAIL]MSheikman@mail.ru[/EMAIL]
Да нет же! Я именно все проверил и дал свой идентификатор контролу!
Цитата:
On 2002-04-08 1937, artgonch wrote
Да нет же! Я именно все проверил и дал свой идентификатор контролу!
Попробуй создать простой проект в котором повтори ситуацию. Если глюк не повтаряется, ищи свою ошибку.
А лучше, кидай код.
PS Если ошибку не видно, не значит что ее нет.