A: 

Rather than drawing to the background DC, why don't you create a temporary window and draw into that? When you destroy the window, the background should get repainted automatically.

I'm just guessing, because I don't know Windows Mobile, but it could be that Windows is caching the last thing that was drawn into the DC and repainting it every time you invalidate the window.

Mark Ransom
That is an interesting approach, I'll give it a shot thanks. I don't believe the DC is caching because the problem only occurs when the buttons get drawn outside my sip panel (above it). I don't have this prob with buttons inside the panel even though they are also drawn to the screen.
When I say buttons inside the panel I mean the blue selected popup buttons. (all other buttons are drawn to a bitmap and then blt to the my sip panel's DC not the screen)
A: 

Have you tried InvalidateRect on the screen hWnd?

Chris Hynes
by screen hWnd I assume you mean ::GetDesktopWindow(), correct? If that is what you mean then yes I've tried all the usual calls against the screen wnd.