snyp
asked on
xp-style manifest and HBITMAP 'flickering' (vc++ 6)
hi, i'm new here. hope someone can help.
i'm using vc++ 6 for lots of projects.. mostly dialog based tools and apps.
a problem i've had for a long time is, if i add an xp-style 'manifest' sheet for my dialog controls, the app displays the new style controls ok, but my bitmaps are 'flickering' whenever i use redrawwindow(). yet if i remove the xp style again, the problem doesn't occur.
the problem is happening with applications that use HBITMAP handles that are redrawn around every 1/25th of a second with a timer.. for special effects, etc.
the flickering looks like interlaced frames.. making large parts of the bitmap 'transparent'
like i say.. there's no problem without the xp-style manifest.. so what's causing it?
regards
i'm using vc++ 6 for lots of projects.. mostly dialog based tools and apps.
a problem i've had for a long time is, if i add an xp-style 'manifest' sheet for my dialog controls, the app displays the new style controls ok, but my bitmaps are 'flickering' whenever i use redrawwindow(). yet if i remove the xp style again, the problem doesn't occur.
the problem is happening with applications that use HBITMAP handles that are redrawn around every 1/25th of a second with a timer.. for special effects, etc.
the flickering looks like interlaced frames.. making large parts of the bitmap 'transparent'
like i say.. there's no problem without the xp-style manifest.. so what's causing it?
regards
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
thanks for your suggestion mico20..
i tried to derive a class from CStatic and override the WM_ERASEBKGND message;
BOOL CAnimStatic::OnEraseBkgnd( CDC* pDC)
{
return TRUE;
}
but it made no difference..
if it makes things any clearer.. a typical example of how the bitmaps are handled and drawn is;
--------------------------
OnInitDialog() {
HBITMAP zoomBmp = m_zoom.GetBitmap(); // m_zoom being a CStatic member of the dialog class
}
..
unsigned long zoomArrray[ZOOM_X * ZOOM_Y];
someTimerFunction(HBITMAP *hBmp) {
specialFx(zoomArray);
SetBitmapBits(*hBmp, (ZOOM_X * ZOOM_Y * 4), zoomArray);
dlg.m_zoom.RedrawWindow();
}
-----------
still stuck with the problem.. it appears to be with redrawwindow().. any help appreciated
regards
i tried to derive a class from CStatic and override the WM_ERASEBKGND message;
BOOL CAnimStatic::OnEraseBkgnd(
{
return TRUE;
}
but it made no difference..
if it makes things any clearer.. a typical example of how the bitmaps are handled and drawn is;
--------------------------
OnInitDialog() {
HBITMAP zoomBmp = m_zoom.GetBitmap(); // m_zoom being a CStatic member of the dialog class
}
..
unsigned long zoomArrray[ZOOM_X * ZOOM_Y];
someTimerFunction(HBITMAP *hBmp) {
specialFx(zoomArray);
SetBitmapBits(*hBmp, (ZOOM_X * ZOOM_Y * 4), zoomArray);
dlg.m_zoom.RedrawWindow();
}
-----------
still stuck with the problem.. it appears to be with redrawwindow().. any help appreciated
regards
ASKER
mico20 you can have the points.
after too much messing around i decided to redo large chunks of code with a method i wanted to avoid, because of things i was doing with my DC in other places.
my two cents is, microsoft are disgustingly lax in their documentation of visual themes and the new xp shell.
link for anyone else having the same kinds of problems.
http://www.codeguru.com/Cpp/controls/controls/article.php/c2297/
after too much messing around i decided to redo large chunks of code with a method i wanted to avoid, because of things i was doing with my DC in other places.
my two cents is, microsoft are disgustingly lax in their documentation of visual themes and the new xp shell.
link for anyone else having the same kinds of problems.
http://www.codeguru.com/Cpp/controls/controls/article.php/c2297/
ASKER
also http://msdn.microsoft.com/library/en-us/dngdi/html/msdn_flicker.asp?frame=true
there's no support for the uxtheme interface, even with visual studio 6's most recent service pack (which is now quite unreasonably old).
quite bad.
there's no support for the uxtheme interface, even with visual studio 6's most recent service pack (which is now quite unreasonably old).
quite bad.
ASKER