Hi,

Thanks for coming back to the project, nice to finally get to talk to you.
I'm spearheading getting some flicker-free redraws working in Win32::GUI but
whenever I try to double-buffer in a window resize, the flicker just
remains. It looks as though the widgets are redrawn after the window, and so
the widgets arent actually part of the window's DC on resize (?!).

I need to know where and how the widgets are drawn. I'm working with
0.0.665.

Here's the process i've been using up to now:

In NEM_WindowMsgLoop, I ignore any WM_ERASEBKGND messages. Then I create a
memory DC that's compatible with the window's DC, and add a bitmap to the
memory DC that's compatible with the bitmap in the window's DC. I fill the
bitmap in the memory DC with the window's background colour, then BitBlt the
window DC over onto the memory DC, then BitBlt the memory DC back into the
window.

I know that this might still leave streaking behind since the streaks will
be part of the window bitmap, but I can fix that once I know that i'm
getting the data I expect for the window contents. Currently I'm just
getting *nothing* at all (flat blank bitmap is copied to memory DC). I even
tried ripping off your code for SaveBMP but that produces nothing either.

Idealy, from what I can gather, every widget should be drawn in a memory DC
(all drawing, erasing backgrounds etc takes place here), the window should
ignore WM_ERASEBKGND (I.e. return (LRESULT) 1 when it receives it to say we
handled it), and the WM_PAINT message should simply cause a BitBlt from the
memory DC into the window's DC. Flicker Gone For Good.

This is my first try at some win32 programming in C / C++ (I'm used to
console or unix stuff) so cut me some slack while I get used to it :)

Thanks in advance,
Steve




Reply via email to