I have not actually worked with the color Palm but this sounds like some of
the problems that used to occur with the old 256 color palette VGA cards in
Windows 3.1. Can you set the objects on the for to unusable then use
FrmShowObject to make them visible after setting the palettie in
frmOpenEvent?
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]]On Behalf Of Kelly
Morrison
Sent: Thursday, August 23, 2001 17:23
To: Palm Developer Forum
Subject: The fine art of palette switching
I'm trying to eliminate a temporary "false color" flash when changing
from one form with a custom palette to another form with a different custom
palette, and I was looking for advice on the best way to accomplish this.
Basically, I have an application with several screens, each with its own
custom palette. I hacked pilrc to produce bitmaps that use my custom
palettes without embedding the palettes themselves in the Tbmp resources, so
they load and display quickly, and I can set the palette using WinPalette()
and view the bitmaps with no problem: they look great. Unfortunately, I'm
having problems figuring out *where* to change palettes so I don't get a
quick glimpse of the image with false colors. Using a common palette for all
of the forms in my application is not an option (the bitmaps are very
different).
Here's what I tried so far:
1. Setting the custom palette before FrmDrawForm() in frmOpenEvent.
Not only does this violate Palm's programming rules, I get errors in
POSE. So much for this one.
2. Setting the custom palette after FrmDrawForm() in frmOpenEvent.
No good. FrmDrawForm() draws the resouces in my .rcp file, and when I
switch the palette afterwards, they don't show properly. I could probably
update the screen here, but it seems inefficient and wasteful to have the
screen draw twice in a row at the beginning of each form load. Similarly, I
know there's an event generated when the palette changes, so I could refresh
the screen when I get that event, but again... it seems wasteful for the
form to have to draw twice in a row.
3. Erasing the form and then switching palettes in frmCloseEvent.
I tried using FrmEraseForm() after getting a frmCloseEvent. Nope, got an
error about not having a drawing surface.
4. Setting the palette to all whites or all blacks in frmCloseEvent.
This hides the image and gives me a blank screen until the next form is
drawn. Unfortunately, it takes me right back to problem #2 above when I load
the next form, and worse, I now have to remember to set either a custom
palette or the standard palette at the beginning of each form that might
load next.
Any suggestions? It feels like I'm *so* close I can taste it. :) Thanks in
advance for any help!!!
------> kell
P.S. I just *know* I'm going to have a similar problem with system dialogs
(e.g., "Find") popping up when I have a custom palette installed... :)
--
For information on using the Palm Developer Forums, or to unsubscribe,
please see http://www.palmos.com/dev/tech/support/forums/
--
For information on using the Palm Developer Forums, or to unsubscribe, please see
http://www.palmos.com/dev/tech/support/forums/