Есть определение типа на Delphi:
TNotifyEventEvent = procedure(Sender:TObject;Event:TEvents) of object;
Подскажите пожалуйста как это будет на С++..
Заранее, огромное спасибо.
Здравствуйте DenisII, Вы писали:
DII>Есть определение типа на Delphi: DII>TNotifyEventEvent = procedure(Sender:TObject;Event:TEvents) of object; DII>Подскажите пожалуйста как это будет на С++.. DII>Заранее, огромное спасибо.
Вообще говоря, никак, так как прямого аналога обработчикам событий Delphi в C++ нет, я думаю, не надо объяснять, почему.
Как уже сказал Андрей, прямого аналога нет.
Вопрос стоит, наверное, несколько некорректно:
Приведен пример из VCL, спрашивается про (голый)C++
если иметь ввиду VC++, то есть ActiveX events (в MFC есть в ClassView/ActiveX events)
Здравствуйте Ростислав Глухов, Вы писали:
РГ>Как уже сказал Андрей, прямого аналога нет. РГ>Вопрос стоит, наверное, несколько некорректно: РГ>Приведен пример из VCL, спрашивается про (голый)C++ РГ>если иметь ввиду VC++, то есть ActiveX events (в MFC есть в ClassView/ActiveX events)
Я согласен с Вами, что вопрос поставлен некорректно..
Как это перенести в Builder C++?
Заранее спасибо..
Здравствуйте DenisII, Вы писали:
DII>Есть определение типа на Delphi: DII>TNotifyEventEvent = procedure(Sender:TObject;Event:TEvents) of object; DII>Подскажите пожалуйста как это будет на С++.. DII>Заранее, огромное спасибо.
Что касается Borland C++ Builder, смотри реализацию TNotifyEvent, к примеру. Более подробно не скажу, так как сам не знаю.
Здравствуйте DenisII, Вы писали:
DII>Есть определение типа на Delphi: DII>TNotifyEventEvent = procedure(Sender:TObject;Event:TEvents) of object; DII>Подскажите пожалуйста как это будет на С++.. DII>Заранее, огромное спасибо.
struct CMy1EventGroup
{
virtual void OnEvent1(){};
virtual void OnEvent2(){};
.
.
.
Любое кол-во событий которые ты хочешь отнести к этой группе.
}
class CAnyClass: public ...твой классы, virtual public CMy1EventGroup
{
virtual void OnEvent1();
{
Обработчик события.
}
.
.
.
События из группы CMy1EventGroup которые ты хочешь обработать.
}
void FireAnyEventFunc(CMy1EventGroup* pEventTarget)
{
pEvent->OnEvent1();
.
.
.
События которые ты хочешь послать.
}
Можно сделать отдельный класс, который будет рассылать сообщения группе объектов. Получиться система похожая на механизм "Connection Points".
Здравствуйте DenisII, Вы писали:
DII>Есть определение типа на Delphi: DII>TNotifyEventEvent = procedure(Sender:TObject;Event:TEvents) of object; DII>Подскажите пожалуйста как это будет на С++..
В Help-е в C++ Builder написано
typedef void __fastcall (__closure *TNotifyEvent)(System::TObject* Sender);
в качестве параметра можешь указывать свои ключевое слово __closure указывает, что функция принадлежит классу (аналог of object).