Charles Pegge (Oxygen BASIC author) has IUP working great as an FFI and threaded under Windows. I'm trying to merge his work with my port of SBT to windows with actually uses the Script BASIC embedding/extension API correctly and not like the hack I been using to get me by.
On Mon, 2016-10-24 at 09:30 -0200, Antonio Scuri wrote: > No, sorry. > > > Each different callback listed in "iup_cbs.h" must be implemented in > Basic also. So how to associate that implementation with the > IupSetCallback in Basic, then you don't need a custom MainLoop. I > think you already did that using the if (strcmp). > > > That can be improved with other strategies, but that's another > story. > > > Best, > Scuri > > > > On Sun, Oct 23, 2016 at 5:15 PM, John Spikowski > <supp...@scriptbasic.org> wrote: > Hi Antonio, > > It looks like the time has come and the old callback functions > I was > counting on have be deprecated. Is there a way I can still > make this > work? > > John > > << C interface >> > > besFUNCTION(PuiSetCallback) > Ihandle *ih; > const char *name; > char *class_name; > > besARGUMENTS("pz") > &ih, &name > besARGEND > > class_name = IupGetClassName(ih); > > if (strcmp(class_name, "dialog") == 0) { > /* IupSetCallback(ih, name, (Icallback)&WinEvent); */ > IupSetFunction(name, (Icallback)&WinEvent); > IupSetAttribute(ih, name, name); > } > else if (strcmp(class_name, "button") == 0) { > /* IupSetCallback(ih, name, (Icallback)&BtnEvent); */ > IupSetFunction(name, (Icallback)&BtnEvent); > IupSetAttribute(ih, name, name); > } > else if (strcmp(class_name, "list") == 0) { > /* IupSetCallback(ih, name, (Icallback)&ListEvent); */ > IupSetFunction(name, (Icallback)&ListEvent); > IupSetAttribute(ih, name, name); > } > else { > /* IupSetCallback(ih, name, (Icallback)&Event); */ > IupSetFunction(name, (Icallback)&Event); > IupSetAttribute(ih, name, name); > } > > besRETURN_STRING(class_name); > besEND > > << Script BASIC >> > > SUB MainLoop > LOCAL this_event, aname > ExitLoop = 0 > REPEAT > __LoopStepWait() > this_event = __GetEvent() > IF this_event <> undef THEN > aname = ::GetActionName() > IF this_event = event{this_event}{aname}[0] THEN > ICALL(event{this_event}{aname}[1]) > END IF > END IF > UNTIL ExitLoop > END SUB > > FUNCTION SetCallback(ih, aname, faddr) > event{ih}{aname}[0] = ih > event{ih}{aname}[1] = faddr > SetCallback = __SetCallback(ih, aname) > END FUNCTION > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's > most > engaging tech sites, SlashDot.org! http://sdm.link/slashdot > _______________________________________________ > Iup-users mailing list > Iup-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/iup-users > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, SlashDot.org! http://sdm.link/slashdot > _______________________________________________ > Iup-users mailing list > Iup-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/iup-users ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ Iup-users mailing list Iup-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/iup-users