Re: how to solve the problem of too many WM_PAINT?
What is assigned to m_pDC?
Is that the exact code, because if it is i wouldn't compile!
I don't see anything there that would cause a repaint.
Why aren't you doing this?
void CCalScreen::OnPaint()
{
CPaintDC dc(this);
CRect temp;
GetClientRect(temp);
CPen pen(PS_SOLID, 3, 0xff0000);
CBrush br(0xff00);
CPen *pOldPen = dc.SelectObject(pen);
CBrush *pOldBrush = dc.SelectObject(br);
dc.FillSolidRect(temp, 0x0);
dc.Ellipse(0, 0, 40, 40);
//remember to select the old objects back into the dc.
dc.SelectObject(pOldPen);
dc.SelectObject(pOldBrush);
}
Look in your code and see if you are calling Invalidate anywhere.
AliR.
"Richard" <t.song@lboro.ac.uk> wrote in message
news:1153758515.317528.319400@b28g2000cwb.googlegroups.com...
Sure.
void CCalScreen::OnPaint()
{
CPaintDC
CRect temp;
GetClientRect(temp);
CPen pen(PS_SOLID, 3, 0xff0000);
CBrush br(0xff00);
m_pDC->SelectObject(pen);
m_pDC->SelectObject(br);
m_pDC->FillSolidRect(temp, 0x0);
m_pDC->Ellipse(0, 0, 40, 40);
}
m_pDC is defined as public CDC* and assigned value in OnInitDialog().
AliR wrote:
Can you post the OnPaint code of the dialog that is causing problems?
I would suspect it is an Invalidate() call in there. Or somewhere in a
timer
or a loop.
AliR.
"Richard" <t.song@lboro.ac.uk> wrote in message
news:1153757821.785080.252400@s13g2000cwa.googlegroups.com...
I create a dialog with a new OnPaint() for testing. It is very simple
and just draw a red square with a green ellipse in the middle. When I
show this dialog, it seems the WM_PAINT message was kept pumping into
dialog's message queue as the OnPaint() was kept invoked so that the
dialog kept freshing itself (you can tell from the simple draw because
it is flicking all the time). Does anybody know what cause this and
how
to solve it?
Interestingly, I did the same thing to the dialog and about dialog
that
.NET wizzard created and found that the flicking is gone (only paint
the dialogs when nessecery). I check the resource editor and they
seems
everyting is the same. But why I have different results?