Вниз
Скачать: CL | DM;

Callback и классы   Найти похожие ветки 

 
Vovan #2   (2007-01-26 00:15) [0]

Довольно известная задача - установить в качестве callback метод класса. Что скажете по этому поводу? Решения видел, но что-то в них не то. Если конкретней, то есть определённого вида callback функция, которую нужно передать в API-шную функцию. О содержимом callback должен позаботиться класс. Как поступить? Может ну его (есть возможность обойтись сообщениями)?


 
DrPass ©   (2007-01-26 01:41) [1]


> О содержимом callback должен позаботиться класс. Как поступить?

Действительно, решения больше на хаки похожи, чем на нормальный код. Если ты посмотришь исходники VCL, то увидишь - методы класса никогда не передаются в качестве callback"ов. Только регулярные процедуры и функции. А уже им в качестве опциональных параметров экземпляр класса (который устанавливает коллбек) подсовывает указатель на самого себя


 
Джо ©   (2007-01-26 01:44) [2]

> [1] DrPass ©   (26.01.07 01:41)
>
> > О содержимом callback должен позаботиться класс. Как поступить?
>
>
> Действительно, решения больше на хаки похожи, чем на нормальный
> код. Если ты посмотришь исходники VCL, то увидишь - методы
> класса никогда не передаются в качестве callback"ов.

Неправда, есть такие :) Но, конечно, хаки. В чем каждый может убедиться взглянув хоть на MakeObjectInstance :)


 
Anatoly Podgoretsky ©   (2007-01-26 21:55) [3]

> Vovan #2  (26.01.2007 00:15:00)  [0]

Эта задача элементарно решается, в качестве каллбак используется регулярная процедура, а он уже работает с классом.


 
Vovan #2   (2007-01-27 01:29) [4]

>Эта задача элементарно решается, в качестве каллбак используется регулярная процедура, а он уже работает с классом.

...Если объявление callback допускает одним из параметров ссылку на объект.


 
DrPass ©   (2007-01-27 01:56) [5]


> ...Если объявление callback допускает одним из параметров
> ссылку на объект

Как правило, во всех системных коллбеках предусмотрен "пользовательский" 32-битный параметр


 
GrayFace ©   (2007-01-27 10:48) [6]

У меня в RSPak есть RSMakeObjectInstance для таких вещей.
http://delphimaster.net/view/15-1169883926/


 
GrayFace ©   (2007-01-27 10:49) [7]

Тоже хак, но без излишних извращений, типа тех, что в MakeObjectInstance.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
2-1169797581
22b
2007-01-26 10:46
2007.02.11
Работа с файловой системой


15-1169373734
Expell
2007-01-21 13:02
2007.02.11
В чем причина?


15-1169395280
optimizer
2007-01-21 19:01
2007.02.11
Помогите оптимизировать.


2-1169480316
Jimmy
2007-01-22 18:38
2007.02.11
Узнать, имеет ли Edit фокус


2-1169432755
viper03
2007-01-22 05:25
2007.02.11
Повторное использование данных SQL запроса




   Наверх