I have a few comments on recent threads and other things I've been noticing, so
I thought I'd pass them along.

As for StrPrintF and floating point, it certainly doesn't support %f or %e yet.
If anyone wants to get Palm OS source and add the support, I'd be happy to add
it to the next OS.  Just send me the code.  Normal caveats like it must work and
be consistent with the code above and below it apply.  I'm willing to consider
other OS areas too...

The minutesWestOfGMT preference and it's data certainly don't match.  Instead,
it seems to match minutesEastOfGMT.  If you take the result for a US device,
divide by 60 minutes, you get 19.  That would place the time zone at EST.  If
you really had your heart set on the West aspect, just use 24 minus the value.
:)

Here's a long chain of problems.  First, apps should never call FrmHandleEvent.
Please search through your code for any such cases.  A big tip off is that none
of Palm's apps do this.  Call FrmDispatchEvent instead.  FrmDispatchEvent first
calls the form's event handler function, and if the function isn't handled, it
then asks FrmHandleEvent to do so.  This leads to the second part, which is all
forms must define event handling functions (call FrmSetEventHandler).  Palm OS
broadcasts events to all forms from time to time, like frmCloseEvents, and
frmUpdateEvents.  When you don't have a function handler defined, these
broadcasts don't reach your form.  This leads to the next issue that if there is
code which draws to the screen (WinDrawLine, WinDrawBitmap, ...), you must
handle frmUpdateEvent and call that draw code.  Palm OS normally, but not
always, saves the image under a form.  When it doesn't, it asks every form to
redraw itself.  If your form doesn't handle frmUpdateEvent to draw special
items, they won't appear.  If you use only standard Palm OS UI objects, you
don't need to worry.  The form code will do all of the redraw.  But we're still
left with the final point, which is if you have code that redraws a form, don't
use FrmGetActiveForm.  Your form may be underneath other forms and therefore it
won't be the active form.  Instead, use FrmGetFormPtr to get a pointer to the
form you want.

If you have custom list draw functions, make sure they don't use
FrmGetActiveForm.  If the list is a popup list, the form that the list is in is
not active while the list is in a window.  The function should use itemsText
(set by LstSetListChoices) as a pointer to all information neccessary to draw
any list item.  Worse alternatives are to use FrmGetFormPtr or global variables.

Hope this helps,

-Roger Flores


Reply via email to