I have an array of CButton and I want to handle an OnClick event on the right button index. I try to use ON_INDEXED_EVENT
this #define ON_INDEXED_EVENT is defined in <Includes/Controls/Defines>
it searches an array of controls but it returns handler(i) when as I understand is inside a bool OnEvent(constint id,constlong& lparam,constdouble& dparam,conststring& sparam) method so it returns an object and not a bool type.
//+------------------------------------------------------------------+//| Macro of event handling map |//+------------------------------------------------------------------+#define INTERNAL_EVENT (-1)
//--- beginning of map#define EVENT_MAP_BEGIN(class_name) bool class_name::OnEvent(constint id,constlong& lparam,constdouble& dparam,conststring& sparam) {
//--- end of map#define EVENT_MAP_END(parent_class_name) return(parent_class_name::OnEvent(id,lparam,dparam,sparam)); }
//--- event handling by numeric ID#define ON_EVENT(event,control,handler) if(id==(event+CHARTEVENT_CUSTOM) && lparam==control.Id()) { handler(); return(true); }
//--- event handling by numeric ID by pointer of control#define ON_EVENT_PTR(event,control,handler) if(control!=NULL && id==(event+CHARTEVENT_CUSTOM) && lparam==control.Id()) { handler(); return(true); }
//--- event handling without ID analysis#define ON_NO_ID_EVENT(event,handler) if(id==(event+CHARTEVENT_CUSTOM)) { return(handler()); }
//--- event handling by row ID#define ON_NAMED_EVENT(event,control,handler) if(id==(event+CHARTEVENT_CUSTOM) && sparam==control.Name()) { handler(); return(true); }
//--- handling of indexed event#define ON_INDEXED_EVENT(event,controls,handler) { int total=ArraySize(controls); for(int i=0;i<total;i++) if(id==(event+CHARTEVENT_CUSTOM) && lparam==controls[i].Id()) return(handler(i)); }
//--- handling of external event#define ON_EXTERNAL_EVENT(event,handler) if(id==(event+CHARTEVENT_CUSTOM)) { handler(lparam,dparam,sparam); return(true); }
Anyone might have a clue where I'm getting it wrong will be appreciated.
Hi,
I have an array of CButton and I want to handle an OnClick event on the right button index.
I try to use ON_INDEXED_EVENT
this #define ON_INDEXED_EVENT is defined in <Includes/Controls/Defines>
it searches an array of controls but it returns handler(i) when as I understand is inside a bool OnEvent(const int id,const long& lparam,const double& dparam,const string& sparam) method
so it returns an object and not a bool type.
Anyone might have a clue where I'm getting it wrong will be appreciated.