Прерывание сообщений Windows в невизуальных компонентах |
![]() |
![]() |
Статьи |
Как неоконный компонент может получать сообщения от Windows? Иногда мы нуждаемся в неоконных компонентах (т.е. тех, которые получены не от TWinControl), чтобы получать сообщения Windows, но неоконный компонент не имеет дескриптора окна. Например, предположим, что мы разрабатываем невизуальный компонент, который регистрирует наше приложение как окно просмотра буфера обмена, чтобы приложение могло отвечать на изменения в буфере обмена. Чтобы получить информацию относительно изменения буфера обмена, наш компонент долен получить сообщение от Windows. Функция Delphi AllocateHWnd используется, чтобы создать скрытое окно, а DeallocateHWnd распорядится с окном, когда мы закончим с ним работу. Скрытое окно нуждается в оконной процедуре. Мы можем использовать метод нашего класса компонента. AllocateHWnd получает ссылку на этот метод как параметр. В методе мы обрабатываем сообщения, которые нам нужны, остальное поручаем Windows, используя вызов API DefWindowProc. Следующий код - это скелетная часть как использовать AllocateHWnd.
Выполнение:
Конечно, можно использовать только Windows API, более жесткий способ. |