Описать совой TEvent и обработчики к нему.C++ Builder
От: Imtent  
Дата: 24.11.05 21:56
Оценка:
Подскажите как и где указать "вид" обработчика такого события как например TEvent MyEvent(MyType *myobj).
Re: Описать совой TEvent и обработчики к нему.C++ Builder
От: ak_miass Россия  
Дата: 25.11.05 04:40
Оценка:
Здравствуйте, Imtent, Вы писали:

I>Подскажите как и где указать "вид" обработчика такого события как например TEvent MyEvent(MyType *myobj).


typedef void __fastcall (__closure* TEvent)(MyType *myobj);
...
TEvent MyEvent;
Re: Описать совой TEvent и обработчики к нему.C++ Builder
От: Anton Batenev Россия https://github.com/abbat
Дата: 25.11.05 04:48
Оценка:
Здравствуйте, 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>>
Re[2]: Описать совой TEvent и обработчики к нему.C++ Build
От: Аноним  
Дата: 25.11.05 12:34
Оценка:
Здравствуйте, 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>


биг сенк, всё понятно.
Re[2]: Описать совой TEvent и обработчики к нему.C++ Build
От: Аноним  
Дата: 25.11.05 12:35
Оценка:
Здравствуйте, ak_miass, Вы писали:

_>Здравствуйте, Imtent, Вы писали:


I>>Подскажите как и где указать "вид" обработчика такого события как например TEvent MyEvent(MyType *myobj).


_>
_>typedef void __fastcall (__closure* TEvent)(MyType *myobj);
_>...
_>TEvent MyEvent;
_>


сенк
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.