I have a Vista Aero problem with ProfUIS containers.
I am developing an app that has custom controls in a window that behaves just fine under XP and under Vista with non-Aero themes. When
Aero/DWM is on however, the dialog window becomes opaque in parts of the dialog (random spots, not the whole dialog) and the controls therein will often vanish whenever a RedrawWindow(&rect, NULL, RDW_INVALIDATE |RDW_ALLCHILDREN); is called.
I have used SetWindowLong() and SetLayeredWindowAttributes() to turn off any transparency attributes or opacity (in case it was inheriting these from somewhere) to no effect. Invalidating the controls or the window programatically (for a repaint) does not have any effect, in fact it seems to be what
triggers the controls from being lost from sight. I’ve done every combination of UpdateWindow, Invalidate, RedrawWindow, etc. to no avail, in fact the more I call Invalidate the worse it gets sometimes. Resizing the window manually at runtime forces the whole shebang to be redrawn correctly however!
My hardware should not be the problem as it is fast (high Vista rating 5.9 for graphics Aero desktop performance). It feels like a timing problem, or an order of Paint problem.
My problematic Dialog has a picture control in it. I set a tabbed container in the picture control. This tabbed container is a CExtTabPageContainerFlatWnd. The dialog is aCExtResizableDialog. It is within the CExtTabPageContainerFlatWnd container that I am having all my problems. I wasn’t sure where the problem might be rooted until I converted theCExtResizableDialog back to a plain CDialog. The result was that the opacity problem went away. My controls still vanish in the tabbed container though, when they are invalidated.
Any ideas on what might be causing this grief? Or is there a way to deactivate DWM in a CExtResizableDialog only?? (not the whole desktop, which I already know how to do and it is not appropriate for a fix at this time).
thanks
p.s. thought I should mention that, unfortunately, to complicate matters, my controls in the tabbed container are custom controls.