Re: Simple drawing application fails
"Sebbie" <Sebbie@discussions.microsoft.com> wrote in message
news:DE2B344D-5519-4619-A0B4-C8E841A64AA2@microsoft.com...
Hi,
I have a simple application where I draw som lines and circles in two
funtions called by the OnPaint(). However it fails. One function draws an
'X' and the other 'O' in the ClientDc. The problem is that I only get som
'/'
instead of an 'X' when drawing an 'X'?
Does this has something to do with which device context I use? In the
turorial I have the onPaint handler uses the CPaintDc dc and passes the dc
as
a pointer to the functions meanwhile in my code I use the CClientDC
locally
in the function?
This is my pseudo code:
OnPaint()
{
drawX();
}
drawX()
{
CClientDC dc (this);
CPen pen;
CPen* pOldPen;
CRect rect = aRect[cellNbr];
ipen.CreatePen(PS_SOLID,4,RGB(125,125,125))
pOldPen = dc.SelectObject(&pen);
rect.DeflateRect(10,10,10,10);
dc.MoveTo(rect.top, rect.left);
dc.LineTo(rect.bottom, rect.right);
dc.MoveTo(rect.top, rect.right);
dc.LineTo(rect.left, rect.bottom);
dc.SelectObject(pOldPen);
}
It's probably better to use the DC given to you in OnPaint(), like in your
tutorial. In the pseudo-code you posted it probably doesn't make a
difference, but in other code (including your actual code that's failing) it
might, for reasons too complicated to explain now (research BeginPaint,
EndPaint and CPaintDC if you're interested).
In your DrawX() function, you probably need to map the coordinates of the
rectangles into client coordinates of the window.
Does the DrawO() function work correctly?