Printing...

I have created a SDI MFC project that draws a text report to the
client window.  When I try to print the text report output to my
printer, the printed text is very very small.  How can I enlarge the
text when I want to print it to a printer?

Thanks,
RAB_Missouri
0
7/5/2004 11:24:49 PM
vc.mfc 33608 articles. 0 followers. Follow

5 Replies
558 Views

Similar Articles

[PageSpeed] 31

RAB_Missouri,

I'll save you the "Johan Rosengren monthly 23 Mb long post on differences in
resolution between printer and screen" :-))), and just briefly recommend you
to either get the resolution of the output display (be it screen or printer)
and scale the output yourself, or - if you only draw text - use
CreatePointFont to create the fonts.

Johan Rosengren
Abstrakt Mekanik AB

"RAB_Missouri" <rabmissouri@yahoo.com> skrev i meddelandet
news:c9aa6a3f.0407051524.344904be@posting.google.com...
> I have created a SDI MFC project that draws a text report to the
> client window.  When I try to print the text report output to my
> printer, the printed text is very very small.  How can I enlarge the
> text when I want to print it to a printer?
>
> Thanks,
> RAB_Missouri


0
7/6/2004 10:43:57 AM
Suppose I create output to the moniter such as 
CView::OnDraw
{
   pDC->textout(10,10, "hello world");
}

Where do I instantiate the CreatePointFont class to enlarge the "hello
world" text when printing?

Thanks,
RAB_Missouri





"Johan Rosengren" <johan.rosengren@telia.com> wrote in message news:<uWKOIY0YEHA.1356@TK2MSFTNGP09.phx.gbl>...
> RAB_Missouri,
> 
> I'll save you the "Johan Rosengren monthly 23 Mb long post on differences in
> resolution between printer and screen" :-))), and just briefly recommend you
> to either get the resolution of the output display (be it screen or printer)
> and scale the output yourself, or - if you only draw text - use
> CreatePointFont to create the fonts.
> 
> Johan Rosengren
> Abstrakt Mekanik AB
> 
> "RAB_Missouri" <rabmissouri@yahoo.com> skrev i meddelandet
> news:c9aa6a3f.0407051524.344904be@posting.google.com...
> > I have created a SDI MFC project that draws a text report to the
> > client window.  When I try to print the text report output to my
> > printer, the printed text is very very small.  How can I enlarge the
> > text when I want to print it to a printer?
> >
> > Thanks,
> > RAB_Missouri
0
7/7/2004 4:39:34 AM
RAB_Missouri,

For example:

xxx::OnDraw
{
  CFont font;
  font.CreatePointFont(...)
  pDC->SelectObject( &font );
  pDC->TextOut(...)
  pDC->SelectStockObject( ANSI_VAR_FONT ); // or whatever stock font
}

Johan Rosengren
Abstrakt Mekanik AB

"RAB_Missouri" <rabmissouri@yahoo.com> skrev i meddelandet
news:c9aa6a3f.0407062039.60da24f1@posting.google.com...
> Suppose I create output to the moniter such as
> CView::OnDraw
> {
>    pDC->textout(10,10, "hello world");
> }
>
> Where do I instantiate the CreatePointFont class to enlarge the "hello
> world" text when printing?
>
> Thanks,
> RAB_Missouri
>
>
>
>
>
> "Johan Rosengren" <johan.rosengren@telia.com> wrote in message
news:<uWKOIY0YEHA.1356@TK2MSFTNGP09.phx.gbl>...
> > RAB_Missouri,
> >
> > I'll save you the "Johan Rosengren monthly 23 Mb long post on
differences in
> > resolution between printer and screen" :-))), and just briefly recommend
you
> > to either get the resolution of the output display (be it screen or
printer)
> > and scale the output yourself, or - if you only draw text - use
> > CreatePointFont to create the fonts.
> >
> > Johan Rosengren
> > Abstrakt Mekanik AB
> >
> > "RAB_Missouri" <rabmissouri@yahoo.com> skrev i meddelandet
> > news:c9aa6a3f.0407051524.344904be@posting.google.com...
> > > I have created a SDI MFC project that draws a text report to the
> > > client window.  When I try to print the text report output to my
> > > printer, the printed text is very very small.  How can I enlarge the
> > > text when I want to print it to a printer?
> > >
> > > Thanks,
> > > RAB_Missouri


0
7/7/2004 9:54:55 AM
Thanks for your help!  Your code example helped me enlarge the text on
both the client window and the printer output.

The problem I am having now is that the text overlaps on the printer
output.  What code can I use in my xxx::OnDraw function so the
textout() doesn't overlap on the printer output?  I am wondering if
the coordinates in the client window and printer output are different?

Thanks,
RAB_Missouri





"Johan Rosengren" <johan.rosengren@telia.com> wrote in message news:<uuEWwhAZEHA.2844@TK2MSFTNGP12.phx.gbl>...
> RAB_Missouri,
> 
> For example:
> 
> xxx::OnDraw
> {
>   CFont font;
>   font.CreatePointFont(...)
>   pDC->SelectObject( &font );
>   pDC->TextOut(...)
>   pDC->SelectStockObject( ANSI_VAR_FONT ); // or whatever stock font
> }
> 
> Johan Rosengren
> Abstrakt Mekanik AB
> 
> "RAB_Missouri" <rabmissouri@yahoo.com> skrev i meddelandet
> news:c9aa6a3f.0407062039.60da24f1@posting.google.com...
> > Suppose I create output to the moniter such as
> > CView::OnDraw
> > {
> >    pDC->textout(10,10, "hello world");
> > }
> >
> > Where do I instantiate the CreatePointFont class to enlarge the "hello
> > world" text when printing?
> >
> > Thanks,
> > RAB_Missouri
> >
> >
> >
> >
> >
> > "Johan Rosengren" <johan.rosengren@telia.com> wrote in message
>  news:<uWKOIY0YEHA.1356@TK2MSFTNGP09.phx.gbl>...
> > > RAB_Missouri,
> > >
> > > I'll save you the "Johan Rosengren monthly 23 Mb long post on
>  differences in
> > > resolution between printer and screen" :-))), and just briefly recommend
>  you
> > > to either get the resolution of the output display (be it screen or
>  printer)
> > > and scale the output yourself, or - if you only draw text - use
> > > CreatePointFont to create the fonts.
> > >
> > > Johan Rosengren
> > > Abstrakt Mekanik AB
> > >
> > > "RAB_Missouri" <rabmissouri@yahoo.com> skrev i meddelandet
> > > news:c9aa6a3f.0407051524.344904be@posting.google.com...
> > > > I have created a SDI MFC project that draws a text report to the
> > > > client window.  When I try to print the text report output to my
> > > > printer, the printed text is very very small.  How can I enlarge the
> > > > text when I want to print it to a printer?
> > > >
> > > > Thanks,
> > > > RAB_Missouri
0
7/15/2004 6:03:31 PM
RAB_Missouri,

I should have gone the long route from the beginning :-)

If I sound patronizing, just eye through the text until you get to something
you can use. You get what you pay for here :-)

The screen and the printer have - of course - a different number of
addressable points to draw on. As you know, a printer might have a DPI (dots
per inch) of 300 or 600, to take two examples. A screen will have a
resoulution, 1 024x786, 800x600 to take two other examples. A normal A4
paper is 8 inches across. Now, for the first printer, we get 2 400 (8x300)
pixels horizontally, for the second 4 800 (8x600).

If you develop on the 1 024x786 screen, and want to draw a vertical line in
the middle of the screen, you might try 512 as the x-coordinate. And how
will that look on the second screen? Not down the middle, at least. On the
printers it gets worse.

So, the coordinate systems are indeed different. To draw a line down the
middle of the output, you must of course get the size of the coordinate
system. The secret in accomplishing this - handed down from tibetan monks to
developers since the dawn of time - is the CDC-member GetDeviceCaps. With
this little beauty (and you want to check the list of allowed parameters for
the API-version rather than the member ifyour documentation is not updated
with all the goodies you can ask the system about) you can get the
resolution of the output media, horizontally and vertically. You can even
get my favorite, the number of pixels per inch. GetDeviceCaps( LOGPIXELSX )
gives this horizontally.

Now, if you get the resolution per inch from a CClientDC in the beginning of
the app (after the main window is created, of course), you can also get the
same value while drawing. The difference between the two will be a scaling
factor you can apply while drawing to get an output proportional between
screen and printer. As the application most of the time draws to the screen,
this difference will for course most of the time be 1.

Consider the following example:
int xpos = 100;
int ypos = 100;
dc.TextOut( "X", xpos, ypos );

On the 800x600 screen, it will start 1/8 of the screen from the left. On the
600x600 laser, it will start 1/48 of the paper. Compare to the following:

int pixelsperinch = dc.GetDeviceCaps( LOGPIXELSX );
double diff = ( double ) pixelsperinch /
m_value_of_logpixelsx_retrieved_earlier:
int xpos = ( int )( 100 * diff );
int ypos = ( int )( 100 * diff );
dc.TextOut( "X", xpos, ypos );

Now, the text will be correctly placed on both output media. Note that
LOGPIXELSY might not give the same value as LOGPIXELSX, and should you do
this correctly, you should take care of this value as well.

You can also work with physical measurements, that is decide that the text
sould be placed one inch for the left and get the appropriate values from
GetDeviceCaps for this. You could also switch the mapping mode to one of the
physical measurements, for example MM_LOMETRIC/MM_HIMETRIC. SetMapMode is
the command to check for this.

There is one final thing to consider, and that is the physical margin of
printer papers. Most printers have a hardware margin - to allow them to drag
the paper through the mechanism. This margin can be gotten by.. you guessed
it - GetDeviceCaps. And should be *deducted* from the coordinates - the
coordinate system starts not at the edges of the paper, but at the hardware
margins.

Phew. There you have it :-)

Johan Rosengren
Abstrakt Mekanik AB

"RAB_Missouri" <rabmissouri@yahoo.com> skrev i meddelandet
news:c9aa6a3f.0407151003.276f6a3f@posting.google.com...
> Thanks for your help!  Your code example helped me enlarge the text on
> both the client window and the printer output.
>
> The problem I am having now is that the text overlaps on the printer
> output.  What code can I use in my xxx::OnDraw function so the
> textout() doesn't overlap on the printer output?  I am wondering if
> the coordinates in the client window and printer output are different?
>
> Thanks,
> RAB_Missouri
>
>
>
>
>
> "Johan Rosengren" <johan.rosengren@telia.com> wrote in message
news:<uuEWwhAZEHA.2844@TK2MSFTNGP12.phx.gbl>...
> > RAB_Missouri,
> >
> > For example:
> >
> > xxx::OnDraw
> > {
> >   CFont font;
> >   font.CreatePointFont(...)
> >   pDC->SelectObject( &font );
> >   pDC->TextOut(...)
> >   pDC->SelectStockObject( ANSI_VAR_FONT ); // or whatever stock font
> > }
> >
> > Johan Rosengren
> > Abstrakt Mekanik AB
> >
> > "RAB_Missouri" <rabmissouri@yahoo.com> skrev i meddelandet
> > news:c9aa6a3f.0407062039.60da24f1@posting.google.com...
> > > Suppose I create output to the moniter such as
> > > CView::OnDraw
> > > {
> > >    pDC->textout(10,10, "hello world");
> > > }
> > >
> > > Where do I instantiate the CreatePointFont class to enlarge the "hello
> > > world" text when printing?
> > >
> > > Thanks,
> > > RAB_Missouri
> > >
> > >
> > >
> > >
> > >
> > > "Johan Rosengren" <johan.rosengren@telia.com> wrote in message
> >  news:<uWKOIY0YEHA.1356@TK2MSFTNGP09.phx.gbl>...
> > > > RAB_Missouri,
> > > >
> > > > I'll save you the "Johan Rosengren monthly 23 Mb long post on
> >  differences in
> > > > resolution between printer and screen" :-))), and just briefly
recommend
> >  you
> > > > to either get the resolution of the output display (be it screen or
> >  printer)
> > > > and scale the output yourself, or - if you only draw text - use
> > > > CreatePointFont to create the fonts.
> > > >
> > > > Johan Rosengren
> > > > Abstrakt Mekanik AB
> > > >
> > > > "RAB_Missouri" <rabmissouri@yahoo.com> skrev i meddelandet
> > > > news:c9aa6a3f.0407051524.344904be@posting.google.com...
> > > > > I have created a SDI MFC project that draws a text report to the
> > > > > client window.  When I try to print the text report output to my
> > > > > printer, the printed text is very very small.  How can I enlarge
the
> > > > > text when I want to print it to a printer?
> > > > >
> > > > > Thanks,
> > > > > RAB_Missouri


0
7/15/2004 7:55:08 PM
Reply:

Similar Artilces:

How do I print a list of the directory contents
I need to print the disk directory contents. In DOS this was possible. Is it possible in WORD? Thanks No - but you could use the freeware Printfolders utility you can download from my web site that will produce a text listing that you can open in Word. -- <>>< ><<> ><<> <>>< ><<> <>>< <>><<> Graham Mayor - Word MVP My web site www.gmayor.com Word MVP web site http://word.mvps.org <>>< ><<> ><<> <>>< ><<> <>>< <...

printing copies
under print options: Number of copies___. It will only print out 1 copy. I say 5 and it still prints out 1. I am a new user of 2007 Excel I suspect the problem is with the printer. Try getting the newest driver best wishes -- Bernard V Liengme Microsoft Excel MVP http://people.stfx.ca/bliengme remove caps from email "Val in Texas" <Val in Texas@discussions.microsoft.com> wrote in message news:78A83505-189A-4731-AF25-CD5505E33510@microsoft.com... > under print options: Number of copies___. It will only print out 1 copy. > I > say 5 and it still prints out 1. ...

Ghosted print and print preview
Hello everyone, I have a problem with printing in excel. The print and print preview options appear ghosted. I still can print through the print icon on the toolbar. Any suggestions??? Martin ...

Print Dynamic Range
I have a basic excel template used for ordering parts. It runs from A1:N250 and I can print easily repeating rows 1:11 on each page (contains job details) . Trouble is sometimes there may only be 10 part numbers requiring only first page and I finish up throwing away trees by printing entire sheet! I know I can reset print area each time am setting this up on Sharepoint for multi users and need a macro/button to recognise number of items and print accordingly. Any help greatly appreciated -- Message posted via http://www.officekb.com Sub SetPrintArea() 'change this cons...

TCP/IP printing
Hello, I have a networking question. I have a print device with a static IP address on one network. A computer on another network can connect to the printer (NBT is enabled and so is LPR) and the drivers are installed but cannot print. I know this is correct behavior but want to know in detail why it seems to half work. I am guessing it has to do with port 138,139 and 515 but not positive. Probably a better question to ask a networking forum but hey. Thanks can you access the printer through the printer IP address? -- ashvin :D Just chill -pls post your feedback on...

Printing booklet
I am producing a 50 to 60 page booklet using Pubisher 2003. The page format will be using 8.5 x 11 paper folded in half. I need to print both sides of the paper. How do I print the booklet so that I print half the project on one side of the paper and the other half on the back. Will publisher keep track of the pages so that for example; that page 2 and page 50 print on the same side/sheet of paper so when all pages are printed, folded and bound the book reads correctly. Thanks John Houston, Tx more info...I am using a single side printer so I have to run the pages through twice ...

Check printing in GP 7.0
Dear Guys, I have check payments for vendors, where I'm dealing with LOCAL CURRENCY & FORIGHN CURRENCY. When I paid by check in LOCAL CURRENCY then the amount in words prints perfectly but if i paid by check in FORIGN CURRENCY then the amount in word prints in numeric which i want to print amount in words instead of numbers. Please help me to print checks amount in words for FORIGN CURRENCY as well. Your suggestion would be appricated on above issue thnx Shamin ...

Excel BUG (All Versions) Excel Macro Margins using Print Preview
Where can i post this BUG? (Excel Macro Margins using Print Preview) Is there an Excel BUG reporting site? Steps: 1) New worksheet, write something in it 2) Start recording a new macro 3) File -> Print Preview 4) Click on the Margins Button, the page margins will appear, so that you can visually change and move them 5) Set one or more margins 6) Close the Print Preview 7) Stop the Macro What happened is that in the VBA code there will be writtenthe following lines: ..LeftMargin = Application.InchesToPoints(0.91) ..RightMargin = Application.InchesToPoints() Where in second line ther...

CHtmlView and Printing
Hi Everyone, The CHtmlView is giving me alot of head aches. Here is what I am doing. I am opening an XML file (being formatted using XLST) in a hidden CHtmlView and printing it. Here is how the process goes: 1. I create the XML file on the fly. 2. load the XML file in to CHtmlView. 3. Once loaded I tell it to print the resulting HTML page. 4, I need to delete XML file after the printing is done. (this is the problem). I can't figure out how to find out when the CHtmlView is done printing. CHtmlView::OnFilePrint is asynchronous. And CHtmlView doesn't tell me that it is currently p...

"Tiled" print setting.
I just want the page that I designed to print on one page! I can't change the print setting "tiled" and as it is, it's printing on four pages all broken up. It is possible that you have created your document on a paper size that is not supported by your printer. Try changing your paper size to 8 1/2 by 11 and see if the print options are more to your liking. "MissMarple" <MissMarple@discussions.microsoft.com> wrote in message news:A6776BEA-37EE-4645-B389-866A6CDB2D96@microsoft.com... >I just want the page that I designed to print on one ...

Problems with printing
Dear all I have an application, which has been working without problems for the last 7 years. The application has some printing capabilities. Now, we have just gotten a new printer (HP Laserjet CM4370), and when I try to print, my application crashes. The app crashes in the print setup dialog even before I press OK. If I select any other printer as default printer, the app doesn't crash. Then I can show the print setup dialog without problems. But then, when I select the CM4370, the app crashes again, even if I do not press OK. Even if I choose to not show the print setup dialog, and j...

Printing--How not to Print Bkground
In my wrksht there is a cell range highlighted with an autofill color. We use this to show the user where to enter the data. Is there anyway to avoid printing this background color. We want to keep the color in the cell range in our wrksht but we dont want it printed. Hi Jeff, have you tried Print preview, Setup, Sheet, Black & white? Gilles "Jeff" <anonymous@discussions.microsoft.com> wrote in message news:001201c3ba81$023b8af0$a301280a@phx.gbl... > In my wrksht there is a cell range highlighted with an > autofill color. We use this to show the user where t...

Printing in Vista
After each document prints another sheet prints which has the filename, directory,title, subject, author, creation date, last saved on, total editing time, last printed on. These are just some of the items that print on this one sheet of paper. Can anyone help me? In your Print dialog, uncheck "Document Properties." On Nov 30, 1:34=A0pm, peppermint patty <peppermint pa...@discussions.microsoft.com> wrote: > After each document prints another sheet prints which has the filename, > directory,title, subject, author, creation date, last saved on, total edi= ti...

How do you customize the 'Print View'?
Ho do you customize the print view of the different type of records? TIA Antony On Apr 24, 5:09 pm, "Antony" <info AT webpc DOT biz> wrote: > Ho do youcustomizetheprintviewof the different type of records? > TIA > Antony You are probably going to need to create a custom SQL Server Report to get what you need. Or you can create a mail merge via MS word and access a CRM Table or View using ODBC. Post what you need exactly and you might get some more specific direction, or possibly someone has what you need already. Scott Moore www.easiintl.com ...

Printing problem
I have Window 7 Home Premium. I have Microsoft Office 2010 beta. I have HP LaserJet P1005 printer. Here is my problem: Printing from Word document to 8.5 x 11" size paper no problem. But I can not print any size of envelopes or custom setup paper size. I cannot print anything from Microsoft Publisher 2010 (Beta). Does any one know how to fix? There is a driver for your printer with a 11-2009 timestamp on the HP site, maybe newer than the one you have now. http://h10025.www1.hp.com/ewfrf/wc/softwareList?os=4062&lc=en&dlc=en&cc=us&lang=en&produ...

Print a report without displaying print preview
Hi, Please can someone tell me in a really basic way how can I print a report WITHOUT it also previewing. I'm using 2007 I have several forms which have a print button ( created with the command button wizard, report operations, print report, then relevant report is chosen to print). This works great, and prints the relevant report for the the associated record, however when you click the print button it also displays the print preview and doesn't close it again. This means that until the preview is closed the same thing keeps printing when the button is clicked....

Currency to Print
Is there a way to set up the defaut "Currency To Print:" to Originating when printe the Invoice from the Sales Batch ID. There is no problem to print the Invoice from Sales transaction Entry, because the default Currency was set using Originating. Thanks, Kevin, Yes. When you select the Print icon in Sales Batch, print options window will open where you specify Originating in Print currency in Dropdown. This should work the same way as printing invoice from sales transaction entry -- Thanks Janakiram M.P. MCP-GP http://janakirammp.blogspot.com "Kevin Zhou" wro...

Printing clips the side of the document words
Hello, I've just installed all the updates for Windows XP that were required and others also and have Office 2003 with Outlook 2003. I've tried to print an email message and the words in the narrative are clipped on the right and left margins. The "TO" "FROM" "SUBJECT" and all the other header information is aligned correctly and the problem is only with the main text portion. When I print regular WORD documents, I don't have this problem and my printer can print directly to the edge of the paper (Laser). The formatting is coming from Outlook a...

Printing
Hi, I have a custom list control (base class is not CListCtrl but simply CWnd). I need to implement printing. I once created a whole printing function for a standard CListCtrl, by making complete custom drawing routines to take data out of the list control and draw it onto a printer DC. However, I have seen how "Custom Grid Control" and other controls can somehow simply map the screen (including icons and everything) onto the printer.. it's not simply a screen print obviously, because it adapts to the printer resolution, but I do wonder if there isn't just a standard print...

Slowing Printing with Publisher & Merged Database
I am doing a newsletter that prints out customers addresses by pulling them off an Excel spreadsheet. I have about 1200 records in the spreadsheet. As the printer runs, it prints out each newsletter with one customers address and then moves down to the next record. The problem I am having is that it takes an extremely and I mean extremely long time to print. 10 copies takes about 15 to 20 minutes. My Publisher file is about seven megabytes. I am using Publisher 2003 and Windows XP Pro SP2 printing to a Xerox 3535 creo Spire. The Spire shows the file as being 900 MB for each 100...

Printing on banner paper
Hi, I have an HP1220C printer, and am running Publisher 2000 on Windows 98. I would like to print on HP banner paper, but even when I set the paper type to banner, it breaks across the page with spaces between the letters. Can you help me? After managing to set up OE-QuoteFix on his new PC, Ed reads a message from Peter <Peter@ascboston.org>... > I have an HP1220C printer, and am running Publisher 2000 > on Windows 98. I would like to print on HP banner paper, > but even when I set the paper type to banner, it breaks > across the page with spaces between the letters. ...

Macro to print document in Duplex format
I am trying to write a macro in a template (.dot) file to be used on 2000 documents based on it. The macro has code to print duplex. The code is give below. I get error 'Unable to set shared printer settings' while trying to assign printersettings. Isnt it the same like changing the Duplex setting in the print->printing preferances? Please advice. ------------------------------------------------------------------------ Option Explicit Public Type PRINTER_DEFAULTS pDatatype As Long pDevmode As Long DesiredAccess As Long End Type ...

Printing 11" by 8.5"
How do we setup the page so it will print vertically11" by 8.5? I just want the text wide and bigger but the defautl print setting which is 8.5 by 11 is not big enough. Thank you. Raymond - In Page Setup, try the Landscape orientation. - Jon ------- Jon Peltier, Microsoft Excel MVP Peltier Technical Services Tutorials and Custom Solutions http://PeltierTech.com/ _______ Raymond wrote: > How do we setup the page so it will print vertically11" by 8.5? I just want > the text wide and bigger but the defautl print setting which is 8.5 by 11 is > not big enough. > &g...

with not print bold print
I have a worksheet that I have been using for monthly reports. Every thing was fine last month but today when I went to enter my data I could view my date when I zoom 100% all I got was a blank screen. I went to print and it printed fine except for any thing that was in bold print didnt print. The worksheet is saved on a floppy I tried to open it on a different computer I could do every thing with no problem. So I uninstalled and reinstalled office 2000 now when I go to open up Excel its blank... you can not see any cells its all gray. Hi Pam NEVER open an Excel file from a Flop...

In excel the gridlines wont print on spreadsheets?
I can't get the gridlines to print in my spreadsheets. File/Page Setup/Sheet tab/ then tick the 'Gridlines' box in the Print area "debby" <debby@discussions.microsoft.com> wrote in message news:458182DE-26B0-4F26-BA28-DC16A041550B@microsoft.com... >I can't get the gridlines to print in my spreadsheets. debby In File>Page Setup>Sheet do you have "Gridlines" checked? Do so. Also, if "Draft Quality" is checked you will not print gridlines. Uncheck it. Gord Dibben Excel MVP On Tue, 1 Mar 2005 07:09:14 -0800, "debby&quo...