--- In [EMAIL PROTECTED], Ben Combee <[EMAIL PROTECTED]> 
wrote:
> 
> >I *learned from example* using the Scrollbar routines from the 
PalmOS4
> >source code, and implemented a SclHandleEvent for my own custom 
scrollbar
> >control.  [This is for a Satellite Forms extension.]  This has 
worked great
> >under previous PalmOS versions, but now that a version of SatForms 
that
> >supports PalmOS 5 is finally available, I find that the code 
doesn't quite
> >work on the OS5 Simulator.
> >
> >Specifically, when I monitor the event queue (nice feature in 
PalmSim!), I
> >find that when I tap on the scrollbar, the expected sclEnterEvent 
is not
> >generated, but a nilEvent is queued instead.  Thus, the scrollbar 
doesn't
> >act on the pen taps.
> >
> >Strangely, if I use a status display function to show me what the 
eventtype
> >of my new event is, it is indeed a sclEnterEvent as expected.  
But, the
> >PalmSim event monitor shows (and the OS sees) only a nilEvent.
> >
> >Here's the snippet of code I am using in the SclHandleEvent:
> >
> >  if (event->eType == penDownEvent)
> >  {
> >   if (RctPtInRectangle (event->screenX, event->screenY, &bar-
>bounds))
> >   {
> >//   newEvent = *event;
> >    MemSet (&newEvent, sizeof(EventType), 0);
> >    newEvent.eType = sclEnterEvent;
> >    newEvent.data.sclEnter.scrollBarID = bar->id;
> >    newEvent.data.sclEnter.pScrollBar = bar;
> >    EvtAddEventToQueue (&newEvent);
> >    handled = true ;
> >
> >    MyShowStatus("sclEvt type:", newEvent.eType);
> >
> >   }
> >  }
> >
> >
> >Can anyone suggest why this sclEnterEvent is being turned into a 
nilEvent in
> >the queue, and better yet what I can do to work around the problem?
> 
> In Palm OS 5, events are converted to an internal format, then 
converted 
> back to 68K format when passed to 68K callback functions.
> 
> Its possible that if an event is ill-formed, that it will be turned 
into a 
> nil event by the OS.  I'm curious, how are you getting "bar->id"?  
I would 
> think that could possibly not get a valid value on Palm OS 5, since 
you 
> shouldn't be directly accessing the internals of Palm OS data 
> structures.  However, the actual release ROM and release device 
might allow 
> this.
> 
> -- 
> Ben Combee <[EMAIL PROTECTED]>
> CodeWarrior for Palm OS technical lead
> Palm OS programming help @ www.palmoswerks.com 

Ben,

Thanks for the suggestion.  I had previously tried setting the 
newEvent.data.sclEnter.scrollBarID to my defined rsrc name as well, 
since my testing app only has a single scrollbar and I know it is the 
right objectid if hardcoded.  I had also added a status display 
function to show me the id in the newEvent like this:
MyShowStatus("SclEvt id:", newEvent.data.sclEnter.scrollBarID);
and it was indeed returning the right id.

So, just now I tried leaving the scrollBarID at 0, and I still get 
the nilEvents coming up in the queue.

Well, I guess since I've got the source code and can modify it to my 
liking, I could try converting all the code to userevents rather than 
sclevents.  Perhaps that would allow me to keep pace with OS5 (pun 
intended).

David Thacker


-- 
For information on using the Palm Developer Forums, or to unsubscribe, please see 
http://www.palmos.com/dev/support/forums/

Reply via email to