I just wanted to report a problem I had earlier tonight in interfacing some
code with iMessenger on a VIIx 3.5 debug ROM.

If you want to start iMessenger from another program to add a mail to the
outbox, there is a well defined interface in <AppLaunchCmd.h> using the
sysAppLaunchCmdAddRecord launch code.  To invoke iMessenger, you have to
fill in a MsgAddRecordParamsType structure with the details of the new mail.
If your putting the mail in the Outbox and you have the edit flag set to
true, iMessenger gives the user the opportunity to edit the message or
cancel.

Here's the bug.  When edit is true, it looks like iMessenger is directly
using the char pointers in that MsgAddRecordParamsType struct to populate
the edit form.  In order for this to work, the strings in the struct must be
allocated with MemHandleNew, then locked with the locked pointer stored in
the struct.  Otherwise, the field manager code in PalmOS will try to do bad
things with non-handle based pointers.

I discovered this when I tried to use string constants -- I kept getting
lock errors from the debug ROM when I tried to do any editing of a message.

I've not checked PalmOS 4.0's iMessenger yet -- there aren't any 4.0 ROMs
with that application posted.  I can live with the limitation; it just needs
to be better documented in that header.

--
Ben Combee
Veriprise Wireless <http://www.veriprise.com>



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

Reply via email to