Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

MFC глючит!

418
05 апреля 2002 года
artgonch
54 / / 20.07.2000
Помогите, пожалуйста! У меня такая проблема:
в обработчике нажатия кнопки в диалоговом окне я получаю временный указатель на объект класса CStatic. Но вот в чем закавырка: я не могу его получить, потому что член-функция GetDlgItem() генерирует исключение. Я проверил все досконально и выяснил, что исключение (Unknown exception in MFC42.dll. Address 0x00000005) возникает из-за того, что поле кдасса CWnd::m_hWnd не инициализировано, более того, при входе в эту функцию-обработчик значение этого поля не определено (точнее, отладчик не может его вычислить). Можно подумать, что окно еще не существует, но это обсурд: оно ведь уже обрабатывало другие сообщения! К тому же, почему-то, в других функциях аналогичный и такой же код работает правильно. В чем дело? Я пользуюсь MSVC++ 6.0, но в Borland C++ все фто работает на ура. Это приводит меня к выводу, что виноват компилятор MS. Препод в институте говорит, что компиляторы BC и VC настолько различны, что не будут правильно компилировать програииы. Это опять бред. Ведб все примеры программ для Windows из комплектв BC майкрософтовские. И они работают! В чем дело?
409
06 апреля 2002 года
Ramzes
163 / / 20.09.2000
Может он действительно не инициализируется?
Мона кода немного выложить?
418
06 апреля 2002 года
artgonch
54 / / 20.07.2000
Как же он не инициализируется, если окно уже создано и его оконная функция обрабатывает сообщения. Я спеуиально проверял, например, в обработчике ON_WM_SHOWWINDOW дескриптор определен. Но вся петрушка в том, что при попытке обращения к полю m_hWnd происходит исключение в библиотеке MFC42.dll. Ошибка конкретно возникает в методе обработки сообщения нажатия кнопки ON_BN_CLICKED. А других обработчиках все работает правильно. Более того, в MSVC++ 5.0 тоже все нориально.
Аноним
Скорее всего дело в том, что ты не поменял ID этого статика. По умолчанию там стоит IDC_STATIC или что-то вроде этого, он равен 0 и с ним функция GetDlgItem не работает. Нужно поставить любой другой уникальный идентификатор.

[EMAIL]MSheikman@mail.ru[/EMAIL]
418
08 апреля 2002 года
artgonch
54 / / 20.07.2000
Да нет же! Я именно все проверил и дал свой идентификатор контролу!
587
09 апреля 2002 года
Lion
42 / / 20.04.2000
Цитата:

On 2002-04-08 1937, artgonch wrote
Да нет же! Я именно все проверил и дал свой идентификатор контролу!



Попробуй создать простой проект в котором повтори ситуацию. Если глюк не повтаряется, ищи свою ошибку.

А лучше, кидай код.

PS Если ошибку не видно, не значит что ее нет.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог