GetStockObject ?
Hello,
In all due respect, I am stumped by GetStockObject and WHITE_PEN...!
I have one circle and one rectangle that are displyed in the client area
where they are drawn upon the WM_TIMER handler. I do not wish to do any of
this drawing in WM_PAINT just yet.
The functionality is that on the first timer event when case equal to 1, I
draw a rectangle and then at the end of the switch/case loop I draw a circle.
On the 2nd timer event when case equals to 2, I want to erase the rectangle
so I used the following code to do this:
(I don't know how else to erase the border of a simple rectangle, so this is
what I did...)
HBRUSH hBrush;
hBrush = CreateSolidBrush(RGB(0,0,0));
SelectObject(hdc,GetStockObject(WHITE_PEN));
Rectangle(hdc,200,200,300,400);
And then at the end of the switch/case loop I draw the circle again. (I
always have to draw the circle at the end of my switch/case loop, this is
beacause , later based on some other data, the cicle will change color!)
The problem is that every time I erase my rectangle, the border of my
circle gets temporarilly erased too???? I know why this is happening, but how
are we supposed to always keep keep the border on the circle while we erase
the rectangle? I think there is a better way to erase a rectangle.... I am
looking at the explanations of brushes, pens and rectangles and don't see how
to draw a rectangle that would be whit in the interior with a *white* border?
If you may please consider the following code fragment:
============================================
case WM_TIMER:
hdc = GetDC(hwnd);
//Counter is incremented by another handler's code
iCounterSFC = envir.getCounterSFC();
switch(iCounterSFC)
{
case 1:
Rectangle(hdc,200,200,300,400);
break;
case 2:
HBRUSH hBrush;
hBrush = CreateSolidBrush(RGB(0,0,0));
SelectObject(hdc,GetStockObject(WHITE_PEN));
Rectangle(hdc,200,200,300,400);
break;
}
HBRUSH hBrush;
hBrush = CreateSolidBrush(RGB(100,100,100));
SelectObject(hdc,hBrush);
Ellipse(hdc,50,50,100,100);
ReleaseDC(hwnd,hdc);
InvalidateRect(hwnd,NULL,FALSE);
return 0;
====================================================
I feel so worthless at this point... I should know this by now!
My appologies foir this question.... however I am stumped by something so
simple by lack of experience with brushes and pens... all valuable advice and
suggestions are very welcome and appreciated!
--
Kind regards
Robert