

Ответов: 5227
Рейтинг: 587
|
|||
Странно почему нет в пакете
![]() ![]() |
|||
карма: 4 |
| ||
файлы: 1 | callback.zip [1.7KB] [443] | ||
Голосовали: | 1nd1g0, LainX |
Ответов: 8938
Рейтинг: 824
|
|||
andrestudio, а иконку?
![]() |
|||
карма: 19 |
| ||
файлы: 1 | callback.ico.ico [4.1KB] [1060] |
Ответов: 5227
Рейтинг: 587
|
|||
Леонид, большой облом, оказывается self в компонентах в таком виде работать с двумя экземплярами класса работать не будет, так что только IC, ну да ладно мне и так сойдёт
![]() |
|||
карма: 4 |
| ||
файлы: 1 | code_24002.txt [2.2KB] [674] |
Ответов: 5227
Рейтинг: 587
|
|||
Сделал ещё попытку, но тоже есть ограничение пока, представляет интерес сама процедура подмены callback функции методом класса. Жаль fpc её не переваривает
|
|||
карма: 4 |
| ||
файлы: 1 | callback1.1beta.zip [4.7KB] [729] |
Ответов: 5227
Рейтинг: 587
|
|||
Появилось желание допилить до полноценного компонента (т.е с перезаписью оконного сообщения) есть задумки по поводу разделению на два компонента типа сервер-клиент, у кого есть интерес можете высказать свои соображения по существу.
|
|||
карма: 4 |
|
Ответов: 4638
Рейтинг: 755
|
|||
Что-то не увидел хотя бы описания что это. Схемы не смотрел, посмотрел последний код, увидел некоторые непонятные манипуляции на ассемблере.
Как я понял, цель - сделать оконную процедуру методом класса. Да, такая задача возникает как только нужно делать компонент со своей Windows callback-функцией. Так как эта процедура является глобальной, возникает проблема какому именно экземпляру класса направлять вызов. На ассемблере, видимо, делается попытка пошаманить с параметрами в методе и передачей Self. ![]() |
|||
карма: 26 |
|
Ответов: 5227
Рейтинг: 587
|
|||
Netspirit писал(а): видимо, делается попытка пошаманить с параметрами в методе и передачей Self. |
|||
карма: 4 |
|
Ответов: 211
Рейтинг: 52
|
|||
andrestudio писал(а): Задача подменить оконную калбэк процедуру пользовательской, с подменной в сообщении L,P параметров.Если я правильно уловил, то для экземпляров TControl имеются соответствующие методы AttachProc( proc )и DetachProc( proc ) книга о КОЛ с.71 писал(а): AttachProc( proc ) - прикрепляет к списку динамических обработчиков сообщений окна указанную процедуру. В KOL это основной способ расширения функциональности существующих оконных объектов, и один из наиболее важных инструментов экономии размера кода, так как позволяет присоединить требуемый свойством обработчик сообщений только при наличии обращения к некоторому свойству или при назначении обработчика некоторого события. Кроме того, таким способом можно прикрепить несколько обработчиков, которые вызываются последовательно, от последнего прикрепленного к первому, пока один из них возвратит флаг «больше не обрабатывать» (Result = FALSE). |
|||
карма: 1 |
|
Ответов: 5227
Рейтинг: 587
|
|||
Собственно не хочется привязываться к HiAsm-контролам, это будет работать через стандартный хэндл окна, сам механизм клиентов с сервером должен быть похож на выше приведённое описание функций AttachProc и DetachProc
|
|||
карма: 4 |
|
Ответов: 4638
Рейтинг: 755
|
|||
Самый простой вариант - делается глобальная переменная типа PList. Каждый экземпляр класса при создании добавляет себя в этот список, при уничтожении удаляет. Callback процедура перебирает объекты из этого списка и если поле "Хендл" объекта соответствует параметру процедуры - вызывает любой метод внутри этого объекта.
Когда-то ещё вроде пробовал так: ![]()
|
|||
карма: 26 |
| ||
Голосовали: | andrestudio |
Ответов: 5227
Рейтинг: 587
|
|||
Netspirit писал(а): Самый простой вариант - делается глобальная переменная типа PList |
|||
карма: 4 |
|