|
-
April 2nd, 1999, 07:27 PM
#1
When painting an elliptic custom control, the entire rect gets painted! Why?
Hello!
I have an owner-drawn (derived from CButton) control in my dialog box. In it's PreSubclassWindow function, I set it a new region (elliptic region) using SetWindowRgn. And here's the problem: although the control looks elliptic in the dialog box (I checked it with Spy++), when I do a simple draw like this:
dc.FillSolidRect(&myRect, RGB(0, 0, 0));
(from within "CSpecialButton::OnPaint" or something alike)
the entire rectangle gets painted in black; not only the elliptic shape!! The same happens with other draw functions.
If you have any idea what might be wrong, please post me a response or E-Mail: [email protected]
Thanx! Ziv
-
September 8th, 1999, 10:10 PM
#2
Re: When painting an elliptic custom control, the entire rect gets painted! Why?
Try setting the window region AFTER the window has been subclassed. Also, make sure that you don't destroy the region after it has been passed to SetWindowRgn(). Windows does not make a copy of the region, so if you destroy it, Windows uses the default region - rectangular.
Ryan
-
September 9th, 1999, 02:01 AM
#3
Re: When painting an elliptic custom control, the entire rect gets painted! Why?
You have to set the region EVERY time you grab a new DC. Although you set it at the beginning, when you grab a DC for OnPaint() it does not have that clipping region in it (it is a new DC, they get recycled for all windows). You must explicitly set the region before painting.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|