Re: Printing Colored Text (and a Concern about System GDI Resources)
Here's a little more background:
I'm trying to print red text on a yellow box on the Printer object and on a
PictureBox (for print preview purposes). In some cases the text has to be
printed in an angle, so I have to use calls to the Win API anyway. Printing
angled text is taken care of.
Here are the problems that I'm faced with:
1. The app I'm writing will be installed on computers with different prints
of which I cannot influence their breed and origin.
The red text and yellow box I mentioned above prints as I want it on
most printers but on some it prints the box and the text in the
color I want BUT, a white rectangle that is as wide and as high as the text
is printed around the text no matter what font I use. When I first saw that
happening I thought that a newer driver would help. Well... it didn't. MS
Word prints the above text and box as it should (MS Word uses API calls,
doesn't it?), and because I'm using API calls anyway, why not for the whole
printing which in my opinion will eliminate the white rectangle problem?
2. I read that widows resources, like pens and brushes have to be used with
great care because they are limited and run out quickly. They
also have to be used almost exclusively as local variables. Here's a rough
object model of the document I want to print: CDocument that is a
collection of CLabel classes. The CLabel class is a collection of CItem
classes. The CItem class contains all the information about its
position on the CDocument, its font, color, etc. The CDocument has a
PrintOn(hDC as long) method the calls the PrintOn(hDC as long) method on all
CLabel classes that call the PrintOn(hDC as long) method on the CItem
classes. The CItem uses only 8 colors. The qustion is: in this case can I
have 8 LOGBRUSH objects on a .bas module that will be globally available and
will be created when the PrintOn(hDC as long) method on the CDocument is
called and used by the CItem objects and destroyed just before the PrintOn(h
DC as long) on the CDocument method exits?
3. I have noticed that when several apps written in VB run at the same time
the system resources and GDI resources run out very rapidly and they go
up when I shot the apps down. Someone told me that this is only a Win 95/98
problem. So my conclusion is that VB uses GDI resources not very
efficiently (do correct me if I'm wrong). And I don't use API calls in all
apps I write. The above problem aggravates when I use the MSHFlexGrid OCX
with many cells. What's your comment on that? And better still how
do you deal with this? Are VC++ apps better at handling this?
Thanks in advance for your responses
Here's a response I got from: Igor Roytberg [email@example.com]
the question should probably be not about which Win API to cal but why in
the world would you want to complicate "ta **** out" your program?! I can
understand if object doesn't have Fore/BackColor properties, but in your
case you must be working with labels or textboxes, isn't it? I hope you've
got the point.
Another story would be if you need to change Fore/BackColor at run time to
the object that doesn't have any of these properties and sets some default
colors which you may not like. Please give us some more details on what
exactly you are trying to accomplish.
Tim Manos <firstname.lastname@example.org> wrote in message
> Dear API gurus,
> How do I set the fore and back color of a device context to print text
> is, say, red? And more precisely, how do I draw a yellow box with and
> red text on it? All that using API calls. An example would be very much
> Thanks in advance,
Top DevX Stories
Easy Web Services with SQL Server 2005 HTTP Endpoints
JavaOne 2005: Java Platform Roadmap Focuses on Ease of Development, Sun Focuses on the "Free" in F.O.S.S.
Wed Yourself to UML with the Power of Associations
Microsoft to Add AJAX Capabilities to ASP.NET
IBM's Cloudscape Versus MySQL