Как это написать на С++
От: DenisII  
Дата: 06.11.01 10:49
Оценка:
Есть определение типа на Delphi:
TNotifyEventEvent = procedure(Sender:TObject;Event:TEvents) of object;
Подскажите пожалуйста как это будет на С++..
Заранее, огромное спасибо.
Re: Как это написать на С++
От: Андрей Россия  
Дата: 06.11.01 11:05
Оценка:
Здравствуйте DenisII, Вы писали:

DII>Есть определение типа на Delphi:

DII>TNotifyEventEvent = procedure(Sender:TObject;Event:TEvents) of object;
DII>Подскажите пожалуйста как это будет на С++..
DII>Заранее, огромное спасибо.

Вообще говоря, никак, так как прямого аналога обработчикам событий Delphi в C++ нет, я думаю, не надо объяснять, почему.
Re: Как это написать на С++
От: Ростислав Глухов Россия http://www.geocities.com/rg2204/
Дата: 06.11.01 11:13
Оценка:
Здравствуйте DenisII, Вы писали:

Как уже сказал Андрей, прямого аналога нет.
Вопрос стоит, наверное, несколько некорректно:
Приведен пример из VCL, спрашивается про (голый)C++
если иметь ввиду VC++, то есть ActiveX events (в MFC есть в ClassView/ActiveX events)
- А Вы что курите?
— Минздрав предупреждает
Re[2]: Как это написать на С++
От: DenisII  
Дата: 06.11.01 11:25
Оценка:
Здравствуйте Ростислав Глухов, Вы писали:

РГ>Как уже сказал Андрей, прямого аналога нет.

РГ>Вопрос стоит, наверное, несколько некорректно:
РГ>Приведен пример из VCL, спрашивается про (голый)C++
РГ>если иметь ввиду VC++, то есть ActiveX events (в MFC есть в ClassView/ActiveX events)

Я согласен с Вами, что вопрос поставлен некорректно..
Как это перенести в Builder C++?
Заранее спасибо..
Re[3]: Как это написать на С++
От: Ростислав Глухов Россия http://www.geocities.com/rg2204/
Дата: 06.11.01 11:57
Оценка:
Здравствуйте DenisII, Вы писали:

DII>Как это перенести в Builder C++?


я про C++ Builder — пас
- А Вы что курите?
— Минздрав предупреждает
Re: Как это написать на С++
От: Андрей Россия  
Дата: 06.11.01 12:37
Оценка:
Здравствуйте DenisII, Вы писали:

DII>Есть определение типа на Delphi:

DII>TNotifyEventEvent = procedure(Sender:TObject;Event:TEvents) of object;
DII>Подскажите пожалуйста как это будет на С++..
DII>Заранее, огромное спасибо.

Что касается Borland C++ Builder, смотри реализацию TNotifyEvent, к примеру. Более подробно не скажу, так как сам не знаю.
Re: Как это написать на С++
От: Povsh Россия  
Дата: 06.11.01 12:56
Оценка:
Здравствуйте 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".
С Уважением, Повшедный Андрей.
Re: Как это написать на С++
От: Sergei  
Дата: 06.11.01 13:39
Оценка:
Здравствуйте 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).

Удачи.
Re[2]: Как это написать на С++
От: DenisII  
Дата: 08.11.01 08:28
Оценка:
Всем огромное спасибо!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.