Flickering Problem
-
I a CDialog based application which has approx 30 CBitmapButtons and 30 CStatic text boxes. I'm receiving data at about 20hz which is causing the screen to flicker badly when these are getting repopulated. I've looked at the usual ways of stopping/reducing the flicker (overloading OnEraseBkgnd, using InvalidateRect ( rect, FALSE ), Invalidate (FALSE), etc...) with no luck. Does anyone have any ideas how I can overcome this? One idea I've had is buffering the entire dialog before painting it, however I can only find examples on how to do this with bitmap controls rather than an entire dialog with controls. TIA, Andy
-
I a CDialog based application which has approx 30 CBitmapButtons and 30 CStatic text boxes. I'm receiving data at about 20hz which is causing the screen to flicker badly when these are getting repopulated. I've looked at the usual ways of stopping/reducing the flicker (overloading OnEraseBkgnd, using InvalidateRect ( rect, FALSE ), Invalidate (FALSE), etc...) with no luck. Does anyone have any ideas how I can overcome this? One idea I've had is buffering the entire dialog before painting it, however I can only find examples on how to do this with bitmap controls rather than an entire dialog with controls. TIA, Andy
I would look into updating the controls without redrawing the entire dialog (especially its background) every time data is updated. Also limiting the update region(s) to just areas that change helps alot. Mark
Mark Salsbery Microsoft MVP - Visual C++ :java:
-
I would look into updating the controls without redrawing the entire dialog (especially its background) every time data is updated. Also limiting the update region(s) to just areas that change helps alot. Mark
Mark Salsbery Microsoft MVP - Visual C++ :java:
Hi Thanks for your reply. I've delved further into this now and have found that the flickering is due (or at least appears to be due) to the fact that I have controls on top of each other, an example is that I will have a Group Box with a CEdit control inside of it, when they are seperate they don't flicker when combined they do. I'm using the Group box to provide a border effect to the CEdit control as none of the built in border styles are suitable, so if I can get an identicle border in another way then my problem may be sorted! Do you have any ideas on how to do this? cheers, Andy
-
Hi Thanks for your reply. I've delved further into this now and have found that the flickering is due (or at least appears to be due) to the fact that I have controls on top of each other, an example is that I will have a Group Box with a CEdit control inside of it, when they are seperate they don't flicker when combined they do. I'm using the Group box to provide a border effect to the CEdit control as none of the built in border styles are suitable, so if I can get an identicle border in another way then my problem may be sorted! Do you have any ideas on how to do this? cheers, Andy
well sort of the answer, further to my above post, I've got rid of the group boxes and changed the style of the CEdit controls to have the Border, Modal Frame and Static Edge set to TRUE. Although this border is thicker than I wanted it is better to look at than a flickering screen! Any suggestions on how to make this border thinner would be great :) Andy,
-
well sort of the answer, further to my above post, I've got rid of the group boxes and changed the style of the CEdit controls to have the Border, Modal Frame and Static Edge set to TRUE. Although this border is thicker than I wanted it is better to look at than a flickering screen! Any suggestions on how to make this border thinner would be great :) Andy,
mcsherry wrote:
Any suggestions...
No :) I'm still wondering why the groupbox causes flicker. Is it just a Z-order thing? If you set the tab order, the groupbox should be before any controls "inside" it. Mark
Mark Salsbery Microsoft MVP - Visual C++ :java: