Вопрос № 43221: Добрый день, Уважаемые эксперты. У меня возникла такая проблемка. Ниже приведена программка на чистом api, так вот она почему то до конца не выгружается из памяти. Загрузка ЦП подскакивает до 100 % если много экзэмпляров. А если запустить в Delphi, и...
Вопрос № 43.221
Добрый день, Уважаемые эксперты. У меня возникла такая проблемка. Ниже приведена программка на чистом api, так вот она почему то до конца не выгружается из памяти. Загрузка ЦП подскакивает до 100 % если много экзэмпляров. А если запустить в Delphi, и после того как закрыть приложение, то в дельфи будет ещё наверху написано всё равно - Running, и доступна только кнопка Пауза, а кнопка Run - недоступна. Т.е. Приложение ещё работает, и приходится его останавливать. Подскажите где у меня ошибка. Заранее спасибо.
Отвечает: Morgion
Здравствуйте, Александр Михайлович!
Так делать скорее всего нельзя и загрузка из-за DefWIndowProc.
Определи свою ф-ю окна, в ней в самом конце вызывай DefWindowProc (если сообщение в свойё ф-й не обрабатываешь).
Как минимум определи реакцию на WM_DESTROY или WM_CLOSE- ты должен вызвать PostQuitMessage, для того, что бы выйти из цикла
обработки сообщений.
Написано Running как раз потому, что DefWindowProc никогда не посылает WM_QUIT (это делает PostQuitMessage). То есть у тебя получается
окно уже уничтожено, а цикл обработки сообщений всё ещё работает.
Ответ отправил: Morgion (статус: Студент)
Ответ отправлен: 17.05.2006, 00:19 Оценка за ответ: 5 Комментарий оценки: Пасибки, разобрался!!!!!!!!1