Понимание и решение проблемы с обработкой сообщения WM_HELP в Delphi XE7Delphi , Синтаксис , Справочник по API-функциямОбработка сообщения WM_HELP в глубоких иерархиях компонентов в Delphi XE7При нажатии клавиши F1 в приложениях Win32 API сначала отправляется соответствующее сообщение о нажатии клавиши, а затем – сообщение В большинстве случаев в приложениях это работает корректно, но в некоторых ситуациях, особенно при глубоких иерархиях компонентов, сообщение После анализа VCL было выявлено, что для глубоко вложенных уровней вызов Причиной такого поведения может быть использование хука Хотя рекомендуется избегать глубоких иерархий компонентов, в некоторых случаях это неизбежно. Например, структура с двумя вложенными фреймами в центре тестового приложения напрямую вдохновлена структурой приложения, где была обнаружена проблема. Подтвержденный ответ указывает на проблему "Windows kernel stack overflow", которая возникает при рекурсивной отправке сообщений окну. На 64-битных системах Windows это происходит гораздо быстрее, чем на 32-битных. Пример кода
Для решения проблемы с глубокими иерархиями и обработкой сообщений можно рассмотреть следующие шаги:
ЗаключениеПроблема обработки сообщений В Delphi XE7 при глубоких иерархиях компонентов может возникать проблема с обработкой сообщения `WM_HELP`, не достигающего верхнего уровня формы, что связано с особенностями вызовов `CallWindowProc` внутри `Vcl.Controls.TWinControl.De Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Справочник по API-функциям ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |