-
January 28th, 2004, 10:36 AM
#1
Deleting a Pen
If I create a Pen with
hpenl = CreatePen(PS_SOLID, 0, color1);
and select that pen and then
hpenl = CreatePen(PS_SOLID, 0, color2);
and select that pen,
Can I delete a single pen or will there be a second undeleted pen out in never-never land?
Brian
-
January 28th, 2004, 01:47 PM
#2
All calls to CreatePen() need to be matched with a parallel call to DeleteObject().
Henri Hein
Principal Engineer, Propel
Do not credit Propel with my views or opinions.
-
January 28th, 2004, 02:08 PM
#3
Windows GDI objects are a limited resource. If you don't free an
object with a call to DeleteObject everytime you create a new
object, then you will sometime run out of resources. This will
cause problems with programs other than your own.
Allocated GDI object are not freed when the program exits. These
remain allocated until a reboot.
-
January 28th, 2004, 02:56 PM
#4
That means it would be a very dumb thing to do as I have done above. There would be no way to delete the first pen.
Brian
-
January 28th, 2004, 03:02 PM
#5
Originally posted by Gyannea
That means it would be a very dumb thing to do as I have done above. There would be no way to delete the first pen.
Brian
yes it would be, there are some gdi tracking tools, don't have my favorite on this machine, but I can probably post it later if you'd like, or the link to it, to breakdown the gdi allocations for your process. One of the things you should keep track of when doing unit testing blada blada...because accidents/mistakes do happen.
-
January 28th, 2004, 03:03 PM
#6
I wouldn't make the judgement call as to Dumb or not.
But, it is required that you call DeleteObject for each Create.
Failure to do so will result in the GDI resources being consumed.
This is an error that is easy to make and many do - I have before.
Suggestion:
Keep each GDI resource in a separate variable. Call DeleteObject
on each when no longer needed.
Also:
Whenever you select a new resource, be sure to keep the original
Pen/Brush/etc. and reset it back when done.
-
January 28th, 2004, 03:09 PM
#7
gdiobj.exe (I think gstrecken posted this tool last year) there is another one I use...but I can't remember it for the life of me right now
and as cvogt61457 stated, sh*t happens, it's just being vigilante in your unit testing to make sure, it doesn't get to the QA department or out in the field...
/Zero defects is only impossible if you think it is....
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
|