Этот топик читают: Гость
|
Ответов: 5227
Рейтинг: 587
|
|||
|
Странно почему нет в пакете
|
|||
| карма: 4 |
| ||
| файлы: 1 | callback.zip [1.7KB] [516] | ||
| Голосовали: | 1nd1g0, LainX |
|
Ответов: 8974
Рейтинг: 824
|
|||
|
andrestudio, а иконку?
|
|||
| карма: 19 |
| ||
| файлы: 1 | callback.ico.ico [4.1KB] [1181] |
|
Ответов: 5227
Рейтинг: 587
|
|||
|
Леонид, большой облом, оказывается self в компонентах в таком виде работать с двумя экземплярами класса работать не будет, так что только IC, ну да ладно мне и так сойдёт
|
|||
| карма: 4 |
| ||
| файлы: 1 | code_24002.txt [2.2KB] [833] |
|
Ответов: 5227
Рейтинг: 587
|
|||
|
Сделал ещё попытку, но тоже есть ограничение пока, представляет интерес сама процедура подмены callback функции методом класса. Жаль fpc её не переваривает
|
|||
| карма: 4 |
| ||
| файлы: 1 | callback1.1beta.zip [4.7KB] [838] |
|
Ответов: 5227
Рейтинг: 587
|
|||
|
Появилось желание допилить до полноценного компонента (т.е с перезаписью оконного сообщения) есть задумки по поводу разделению на два компонента типа сервер-клиент, у кого есть интерес можете высказать свои соображения по существу.
|
|||
| карма: 4 |
|
|
Ответов: 4671
Рейтинг: 767
|
|||
|
Что-то не увидел хотя бы описания что это. Схемы не смотрел, посмотрел последний код, увидел некоторые непонятные манипуляции на ассемблере.
Как я понял, цель - сделать оконную процедуру методом класса. Да, такая задача возникает как только нужно делать компонент со своей 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 |
|
|
Ответов: 4671
Рейтинг: 767
|
|||
|
Самый простой вариант - делается глобальная переменная типа PList. Каждый экземпляр класса при создании добавляет себя в этот список, при уничтожении удаляет. Callback процедура перебирает объекты из этого списка и если поле "Хендл" объекта соответствует параметру процедуры - вызывает любой метод внутри этого объекта.
Когда-то ещё вроде пробовал так: |
|||
| карма: 26 |
| ||
| Голосовали: | andrestudio |
|
Ответов: 5227
Рейтинг: 587
|
|||
|
Netspirit писал(а): Самый простой вариант - делается глобальная переменная типа PList |
|||
| карма: 4 |
|
11



Поиск
Друзья
Администрация