1. Win32Lib please fix msg handler
- Posted by Al Getz <xaxo at AOL.COM> Sep 05, 2000
- 440 views
in win32lib: START CODE QUOTE: -- user can process events that Win32Lib doesn't have handlers for. if onEvent[ id ] > 0 then -- call routine call_proc( onEvent[ id ], {iMsg, wParam, lParam} ) --why not a function? -- NEW! 0.41 allow user to override if myReturn[length(myReturn)] != 0 then return popSelf() end if :END CODE QUOTE The problem is, an event handler often has to return a value of 0 to tell Windows it is processing the event. Since 'popSelf()' only happens with non-zero values, its impossible to override without modifying the win32lib file. How about fixing that in your various versions? The simplest is: if onEvent[id]>0 then retv={0,0} retv=call_func(onEvent[id],{iMsg,wParam,lParam}) if retv[1]>0 then return retv[2] end if If you want to stick with the current method, make each ret stack member a two dimensional value: {0,0} the first value indicating whether or not to return the second value. This is a fairly important functionality! Thanks, Al
2. Re: Win32Lib please fix msg handler
- Posted by Derek Parnell <dparnell at BIGPOND.NET.AU> Sep 06, 2000
- 440 views
Ok, it'll go into the next bleeding edge build - I'll work on this today. If anyone has a better idea to solve this let me know. --- cheers, Derek ----- Original Message ----- From: "Al Getz" <xaxo at AOL.COM> To: <EUPHORIA at LISTSERV.MUOHIO.EDU> Sent: Wednesday, September 06, 2000 6:01 AM Subject: Win32Lib please fix msg handler > in win32lib: > > START CODE QUOTE: > -- user can process events that Win32Lib doesn't have handlers for. > if onEvent[ id ] > 0 then > -- call routine > call_proc( onEvent[ id ], {iMsg, wParam, lParam} ) --why not a function? > > -- NEW! 0.41 allow user to override > if myReturn[length(myReturn)] != 0 then > return popSelf() > end if > :END CODE QUOTE > > The problem is, an event handler often has to return a value of 0 to tell > Windows it is processing the event. Since 'popSelf()' only happens > with non-zero values, its impossible to override without > modifying the win32lib file. > > How about fixing that in your various versions? > The simplest is: > > if onEvent[id]>0 then > retv={0,0} > retv=call_func(onEvent[id],{iMsg,wParam,lParam}) > if retv[1]>0 then > return retv[2] > end if > > If you want to stick with the current method, make each ret stack > member a two dimensional value: > {0,0} > the first value indicating whether or not to return the second value. > > This is a fairly important functionality! > > Thanks, > Al
3. Re: Win32Lib please fix msg handler
- Posted by Matthew Lewis <MatthewL at KAPCOUSA.COM> Sep 05, 2000
- 440 views
Al Getz wrote: <snip> > The problem is, an event handler often has to return a value > of 0 to tell > Windows it is processing the event. Since 'popSelf()' only happens > with non-zero values, its impossible to override without > modifying the win32lib file. > > How about fixing that in your various versions? > The simplest is: <snip> That's a very good point, although I think I'd change the implementation a little: in pushSelf myReturn &= { {} } in WndProc/SubProc object retval ... if atom(myReturn[length(myReturn)]) then return popSelf() end if ... There are some other changes that would have to me made, of course, but all this would be hidden from the user, anyway. Matt Lewis
4. Re: Win32Lib please fix msg handler
- Posted by "Cuny, David at DSS" <David.Cuny at DSS.CA.GOV> Sep 05, 2000
- 466 views
Derek Parnell wrote: > Ok, it'll go into the next bleeding edge build - > I'll work on this today. If anyone has a better > idea to solve this let me know. It would be more clear if there were a wrapper on this: skipDefaultProcessing( integer returnCode ) The name isn't very good, feel free to fix it. Other than that, it looks sensible. -- David Cuny