![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Callback и классы [D7, XP]
Vovan #2 © (2007-01-26 00:15:00)Довольно известная задача - установить в качестве callback метод класса. Что скажете по этому поводу? Решения видел, но что-то в них не то. Если конкретней, то есть определённого вида callback функция, которую нужно передать в API-шную функцию. О содержимом callback должен позаботиться класс. Как поступить? Может ну его (есть возможность обойтись сообщениями)?
GrayFace (2007-01-27 10:49:00) [1]Тоже хак, но без излишних извращений, типа тех, что в MakeObjectInstance.
GrayFace (2007-01-27 10:48:00) [2]У меня в RSPak есть RSMakeObjectInstance для таких вещей.
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1169883926&n=3
DrPass (2007-01-27 01:56:00) [3]
> ...Если объявление callback допускает одним из параметров
> ссылку на объект
Как правило, во всех системных коллбеках предусмотрен "пользовательский" 32-битный параметр
Vovan #2 (2007-01-27 01:29:00) [4]> Эта задача элементарно решается, в качестве каллбак используется регулярная процедура, а он уже работает с классом.
...Если объявление callback допускает одним из параметров ссылку на объект.
Anatoly Podgoretsky (2007-01-26 21:55:00) [5]> Vovan #2 (26.01.2007 00:15:00) [0]
Эта задача элементарно решается, в качестве каллбак используется регулярная процедура, а он уже работает с классом.
Джо (2007-01-26 01:44:00) [6]> [1] DrPass © (26.01.07 01:41)
>
> > О содержимом callback должен позаботиться класс. Как поступить?
>
>
> Действительно, решения больше на хаки похожи, чем на нормальный
> код. Если ты посмотришь исходники VCL, то увидишь - методы
> класса никогда не передаются в качестве callback'ов.
Неправда, есть такие :) Но, конечно, хаки. В чем каждый может убедиться взглянув хоть на MakeObjectInstance :)
DrPass (2007-01-26 01:41:00) [7]
> О содержимом callback должен позаботиться класс. Как поступить?
Действительно, решения больше на хаки похожи, чем на нормальный код. Если ты посмотришь исходники VCL, то увидишь - методы класса никогда не передаются в качестве callback'ов. Только регулярные процедуры и функции. А уже им в качестве опциональных параметров экземпляр класса (который устанавливает коллбек) подсовывает указатель на самого себя