Delphi
- 1 ответ
- 0 вопросов
1
Вклад в тег
type
TMyWndProcQueeHandler = class(TComponent)
private
FWndProcsList: array of TWndMethod; // или TList<TWndMethod>
public
// здесь присваиваем контролу MyWndProc в качестве WndProc
// а оригинальный добавлем в FWndProcsList
procedure PatchControl;
// здесь соответственно восстанавливаем оригинальный WndProc
procedure UnpatchControl;
// здесь вызываем WndProc-ы в нужном порядке. (начиная с последнего (кастомного) до 0-го (оригинального))
procedure MyWndProc(var Message: TMessage);
// тут просто добавляем aWndProc в список
procedure AddWndProc(const aWndProc: TWndProc);
// ну и конечно надо ещё сделать конструктор/деструктор. Опционально переопределить Notification, чтобы получать уведомления от освобожденных связанных компонентов.
// И добавить property LinkedControl с setter-ом.
end;