Подскажите как и где указать "вид" обработчика такого события как например TEvent MyEvent(MyType *myobj).
Здравствуйте, Imtent, Вы писали:
I>Подскажите как и где указать "вид" обработчика такого события как например TEvent MyEvent(MyType *myobj).
typedef void __fastcall (__closure* TEvent)(MyType *myobj);
...
TEvent MyEvent;
Здравствуйте, Imtent, Вы писали:
I>Подскажите как и где указать "вид" обработчика такого события как например TEvent MyEvent(MyType *myobj).
Не совсем понятен вопрос, но, может, имелось ввиду следующее:
// объявление типа указатель на обработчик события
typedef TEvent* (__closure * MyEvent)(MyType* myobj);
class MyClass
{
public:
MyClass ()
{
// начальная инициализация указателя
SomeEvent = 0;
// установка указателя на обработчик события
// может производится в любом месте любого кода
// может инициализироваться адресом любого другого метода
// с тем же прототипом любого другого класса
// здесь просто для наглядности
SomeEvent = SomeMethod;
// вызов метода через указатель на обработчик
// вызов производится так же согласно логике программы
if (SomeEvent)
{
MyType* type = 0; /* или чему там еще */
TEvent* event = SomeEvent(type);
}
}
// указатель на обработчик события
MyEvent SomeEvent;
private:
// реализация обработчика события
TEvent* SomeMethod (MyType* myobj)
{
return 0; /* или чего там нужно */
}
};
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, Anton Batenev, Вы писали:
AB>Здравствуйте, Imtent, Вы писали:
I>>Подскажите как и где указать "вид" обработчика такого события как например TEvent MyEvent(MyType *myobj).
AB>Не совсем понятен вопрос, но, может, имелось ввиду следующее:
AB>
AB>// объявление типа указатель на обработчик события
AB>typedef TEvent* (__closure * MyEvent)(MyType* myobj);
AB>class MyClass
AB>{
AB> public:
AB> MyClass ()
AB> {
AB> // начальная инициализация указателя
AB> SomeEvent = 0;
AB> // установка указателя на обработчик события
AB> // может производится в любом месте любого кода
AB> // может инициализироваться адресом любого другого метода
AB> // с тем же прототипом любого другого класса
AB> // здесь просто для наглядности
AB> SomeEvent = SomeMethod;
AB> // вызов метода через указатель на обработчик
AB> // вызов производится так же согласно логике программы
AB> if (SomeEvent)
AB> {
AB> MyType* type = 0; /* или чему там еще */
AB> TEvent* event = SomeEvent(type);
AB> }
AB> }
AB> // указатель на обработчик события
AB> MyEvent SomeEvent;
AB> private:
AB> // реализация обработчика события
AB> TEvent* SomeMethod (MyType* myobj)
AB> {
AB> return 0; /* или чего там нужно */
AB> }
AB>};
AB>
биг сенк, всё понятно.
Здравствуйте, ak_miass, Вы писали:
_>Здравствуйте, Imtent, Вы писали:
I>>Подскажите как и где указать "вид" обработчика такого события как например TEvent MyEvent(MyType *myobj).
_>_>typedef void __fastcall (__closure* TEvent)(MyType *myobj);
_>...
_>TEvent MyEvent;
_>
сенк