www.pudn.com > 95659637.rar > Lreference.rtf, change:1999-02-12,size:74380b


{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} 
{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f4\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Times;} 
{\f5\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Helvetica;}{\f6\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Courier;}{\f7\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Geneva;} 
{\f8\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Tms Rmn;}{\f9\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Helv;}{\f10\froman\fcharset0\fprq2{\*\panose 00000000000000000000}MS Serif;} 
{\f11\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}MS Sans Serif;}{\f12\froman\fcharset0\fprq2{\*\panose 00000000000000000000}New York;}{\f13\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}System;} 
{\f14\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f15\fswiss\fcharset0\fprq3{\*\panose 020b0604030504040204}Tahoma;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0; 
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128; 
\red192\green192\blue192;}{\stylesheet{\sb100\sa100\nowidctlpar\adjustright \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\nowidctlpar\adjustright \sbasedon0 \snext16 Definition Term;}{\s16\li360\nowidctlpar\adjustright  
\sbasedon0 \snext15 Definition List;}{\*\cs17 \additive \i Definition;}{\s18\sb100\sa100\keepn\nowidctlpar\outlinelevel1\adjustright \b\fs48\kerning36 \sbasedon0 \snext0 H1;}{\s19\sb100\sa100\keepn\nowidctlpar\outlinelevel2\adjustright \b\fs36  
\sbasedon0 \snext0 H2;}{\s20\sb100\sa100\keepn\nowidctlpar\outlinelevel3\adjustright \b\fs28 \sbasedon0 \snext0 H3;}{\s21\sb100\sa100\keepn\nowidctlpar\outlinelevel4\adjustright \b \sbasedon0 \snext0 H4;}{ 
\s22\sb100\sa100\keepn\nowidctlpar\outlinelevel5\adjustright \b\fs20 \sbasedon0 \snext0 H5;}{\s23\sb100\sa100\keepn\nowidctlpar\outlinelevel6\adjustright \b\fs16 \sbasedon0 \snext0 H6;}{\s24\nowidctlpar\adjustright \i \sbasedon0 \snext0 Address;}{ 
\s25\li360\ri360\sb100\sa100\nowidctlpar\adjustright \sbasedon0 \snext25 Blockquote;}{\*\cs26 \additive \i CITE;}{\*\cs27 \additive \f2\fs20 CODE;}{\*\cs28 \additive \i \sbasedon10 Emphasis;}{\*\cs29 \additive \ul\cf2 \sbasedon10 Hyperlink;}{\*\cs30  
\additive \ul\cf12 \sbasedon10 FollowedHyperlink;}{\*\cs31 \additive \b\f2\fs20 Keyboard;}{\s32\nowidctlpar\tx0\tx959\tx1918\tx2877\tx3836\tx4795\tx5754\tx6713\tx7672\tx8631\tx9590\adjustright \f2\fs20 \sbasedon0 \snext32 Preformatted;}{ 
\s33\qc\nowidctlpar\brdrt\brdrdb\brdrw5\brdrcf1 \adjustright \v\f1\fs16 \snext0 \shidden z-Bottom of Form;}{\s34\qc\nowidctlpar\brdrb\brdrdb\brdrw5\brdrcf1 \adjustright \v\f1\fs16 \snext0 \shidden z-Top of Form;}{\*\cs35 \additive \f2 Sample;}{\*\cs36  
\additive \b \sbasedon10 Strong;}{\*\cs37 \additive \f2\fs20 Typewriter;}{\*\cs38 \additive \i Variable;}{\*\cs39 \additive \v\cf6 HTML Markup;}{\*\cs40 \additive \v Comment;}}{\*\listtable{\list\listtemplateid-1\listsimple{\listlevel\levelnfc0\leveljc0 
\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'01*;}{\levelnumbers;}}{\listname ;}\listid-2}}{\*\listoverridetable{\listoverride\listid-2\listoverridecount1{\lfolevel\listoverrideformat{\listlevel\levelnfc23\leveljc0\levelfollow0 
\levelstartat0\levelold\levelspace0\levelindent360{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li720 }}\ls1}}{\info{\title Printer library documentation}{\author Richard Stringer}{\operator Richard Stringer} 
{\creatim\yr1999\mo2\dy12\hr14\min30}{\revtim\yr1999\mo2\dy12\hr14\min30}{\version2}{\edmins0}{\nofpages34}{\nofwords3923}{\nofchars22564}{\*\company ISS SOftware}{\nofcharsws27662}{\vern71}}{\*\userprops {\propname GENERATOR}\proptype30{\staticval  
Mozilla/4.5 [en] (Win95\'3b I) [Netscape]}}\margl1440\margr1440 \widowctrl\ftnbj\aenddoc\hyphcaps0\viewkind5\viewscale100 \fet0\sectd \linex0\headery1440\footery1440\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2 
\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6 
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang 
{\pntxtb (}{\pntxta )}}\pard\plain \sb100\sa100\nowidctlpar\adjustright {\cs39\v\cf6 <!doctype html public "-//w3c//dtd html 4.0 transitional//en">}{\~  
\par }\pard\plain \s18\qc\sb100\sa100\keepn\nowidctlpar\outlinelevel1\adjustright \b\fs48\kerning36 {\cf9 CPage Class Reference}{ 
\par }\pard\plain \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz0\shplid1026 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8192\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par \line In order to use the printing functions in your project you need to include the files: \line }{\b\cf9 CPage.cpp}{ \line }{\b\cf9 CPage.h}{ \line }{\b\cf9 CPrinter.cpp}{ \line }{\b\cf9 CPrinter.h}{ \line }{\b\cf9 Dib.cpp}{ \line }{\b\cf9 Dib.h}{  
\line In any file where reference to the printing functions is needed include the header file: \line }{\b\cf9 CPage.h}{ \line That\rquote s all that is needed to incorporate the printing functions. \line If you find this library useful let me know.  
 
\par }{\field{\*\fldinst {\fs20 HYPERLINK "mailto::kdtexas@onramp.net"}{\fs20 {\*\datafield  
00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b360000006d00610069006c0074006f003a003a006b0064007400650078006100730040006f006e00720061006d0070002e006e00650074000000}}}{\fldrslt {\cs29\fs20\ul\cf2 kdtexas@onramp.net}}}{  
 
\par }{\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz1\shplid1027{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}} 
{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}}{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8193 
\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par }\pard\plain \s18\qc\sb100\sa100\keepn\nowidctlpar\outlinelevel1\adjustright \b\fs48\kerning36 {{\*\bkmkstart toc}{\*\bkmkend toc}Table of Contents 
\par {\pntext\pard\plain\f3 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \qc\fi-360\li720\sb100\sa100\nowidctlpar{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {\field{\*\fldinst {HYPERLINK  \\l "CPrinter"}{ 
{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000900000043005000720069006e007400650072000000}}}{\fldrslt {\cs29\ul\cf2 CPrinter Class}}}{ 
\par {\pntext\pard\plain\f3 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li720\sb100\sa100\nowidctlpar{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {\field{\*\fldinst {HYPERLINK  \\l "prttype"}{{\*\datafield  
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000800000070007200740074007900700065000000}}}{\fldrslt {\cs29\ul\cf2 Prttype Structure Definition}}}{ 
\par {\pntext\pard\plain\f3 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}{\field{\*\fldinst {HYPERLINK  \\l "cpage"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b020000000800000006000000630070006100670065000000}}}{\fldrslt {\cs29\ul\cf2 CPage Class Definition}}}{ 
 
\par }\pard\plain \s18\qc\sb100\sa100\keepn\nowidctlpar\outlinelevel1\adjustright \b\fs48\kerning36 {Functions 
\par }\pard\plain \qc\sb100\sa100\nowidctlpar\adjustright {\fs20\cf9 Not all functions are located here. Consult the demo program or CPage.h for a complete list}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\~\~\~\~\~\~\~\~ }{\field{\*\fldinst {HYPERLINK  \\l "SetUserFunction"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b0200000008000000100000005300650074005500730065007200460075006e006300740069006f006e000000}} 
}{\fldrslt {\cs29\ul\cf2 SetUserFunction}}}{ \line \~\~\~\~\~\~\~\~ }{\field{\*\fldinst {HYPERLINK  \\l "SetPrinterMode"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f0000005300650074005000720069006e007400650072004d006f00640065000000} 
}}{\fldrslt {\cs29\ul\cf2 SetPrinterMode}}}{ \line \~\~\~\~\~\~\~\~ }{\field{\*\fldinst {HYPERLINK  \\l "GetPrinterName"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f0000004700650074005000720069006e007400650072004e0061006d0065000000} 
}}{\fldrslt {\cs29\ul\cf2 GetPrinterName}}}{ \line \~\~\~\~\~\~\~\~}{\field{\*\fldinst {HYPERLINK  \\l "CpageConstruct"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f0000004300700061006700650043006f006e007300740072007500630074000000}} 
}{\fldrslt {\cs29\ul\cf2  CPage Constructor}}}{ \line \~\~\~\~\~\~\~\~ }{\field{\*\fldinst {HYPERLINK  \\l "Print"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b0200000008000000060000005000720069006e0074000000}}}{\fldrslt {\cs29\ul\cf2 Print}}}{ \line  
\~\~\~\~\~\~\~\~ }{\field{\*\fldinst {HYPERLINK  \\l "PrintColumn"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c0000005000720069006e00740043006f006c0075006d006e000000}}}{\fldrslt {\cs29\ul\cf2 PrintColumn}}}{ \line \~\~\~\~\~\~\~\~ } 
{\field{\*\fldinst {HYPERLINK  \\l "SetLineSpacing"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f0000005300650074004c0069006e006500530070006100630069006e0067000000}}}{\fldrslt {\cs29\ul\cf2 SetLineSpacing}}}{ \line \~\~\~\~\~\~\~\~ } 
{\field{\*\fldinst {HYPERLINK  \\l "SetFont"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000800000053006500740046006f006e0074000000}}}{\fldrslt {\cs29\ul\cf2 SetFont}}}{ \line \~\~\~\~\~\~\~\~ }{\field{\*\fldinst {HYPERLINK  \\ 
l "SetFontSize"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c00000053006500740046006f006e007400530069007a0065000000}}}{\fldrslt {\cs29\ul\cf2 SetFontSize}}}{ \line \~\~\~\~\~\~\~\~ }{\field{\*\fldinst {HYPERLINK  \\l "SetColor"}{ 
{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000900000053006500740043006f006c006f0072000000}}}{\fldrslt {\cs29\ul\cf2 SetColor}}}{ \line \~\~\~\~\~\~\~\~ }{\field{\*\fldinst {HYPERLINK  \\l "SetRightmargin"}{{\*\datafield  
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000530065007400520069006700680074006d0061007200670069006e000000}}}{\fldrslt {\cs29\ul\cf2 SetRightMargin}}}{ \line \~\~\~\~\~\~\~\~ }{\field{\*\fldinst {HYPERLINK  \\l "SetBottomMargin"}{ 
{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000001000000053006500740042006f00740074006f006d004d0061007200670069006e000000}}}{\fldrslt {\cs29\ul\cf2 SetBottomMargin}}}{ \line \~\~\~\~\~\~\~\~ }{\field{\*\fldinst {HYPERLINK  \\ 
l "GetDisplayContext"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000001200000047006500740044006900730070006c006100790043006f006e0074006500780074000000}}}{\fldrslt {\cs29\ul\cf2 GetDisplayContext}}}{ \line \~\~\~\~\~\~\~\~ } 
{\field{\*\fldinst {HYPERLINK  \\l "PrintBitMap"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c0000005000720069006e0074004200690074004d00610070000000}}}{\fldrslt {\cs29\ul\cf2 PrintBitmap}}}{ \line \~\~\~\~\~\~\~\~ } 
{\field{\*\fldinst {HYPERLINK  \\l "GetNextLogCol"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000004700650074004e006500780074004c006f00670043006f006c000000}}}{\fldrslt {\cs29\ul\cf2 GetNextLogicalColumn}}}{ \line \~\~\~\~\~\~\~\~  
}{\field{\*\fldinst {HYPERLINK  \\l "Line"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000004c0069006e0065000000}}}{\fldrslt {\cs29\ul\cf2 Line}}}{ \line \~\~\~\~\~\~\~\~ }{\field{\*\fldinst {HYPERLINK  \\l "Line"}{{\*\datafield  
08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000004c0069006e0065000000}}}{\fldrslt {\cs29\ul\cf2 Box}}}{ \line \~\~\~\~\~\~\~\~}{\field{\*\fldinst {HYPERLINK  \\l "CheckBox"}{{\*\datafield  
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000900000043006800650063006b0042006f0078000000}}}{\fldrslt {\cs29\ul\cf2  CheckBox}}}{ \line \~\~\~\~\~\~\~\~ }{\field{\*\fldinst {HYPERLINK  \\l "Tables"}{{\*\datafield  
08d0c9ea79f9bace118c8200aa004ba90b0200000008000000070000005400610062006c00650073000000}}}{\fldrslt {\cs29\ul\cf2 Tables}}}{ \line \~\~\~\~\~\~\~\~ }{\field{\*\fldinst {HYPERLINK  \\l "RotateText"}{{\*\datafield  
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000052006f00740061007400650054006500780074000000}}}{\fldrslt {\cs29\ul\cf2 Rotated Text}}}{ \line \~  
\par \~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~ }{\field{\*\fldinst {\fs20 HYPERLINK  \\l "Printtable"}{\fs20 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b0000005000720069006e0074007400610062006c0065000000}}}{\fldrslt {\cs29\fs20\ul\cf2 Print( 
TABLEHEADER* )}}}{ \line \~\~\~\~\~\~\~\~ }{\field{\*\fldinst {HYPERLINK  \\l "Regions"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000800000052006500670069006f006e0073000000}}}{\fldrslt {\cs29\ul\cf2 Regions}}}{ \line \~\~\~\~\~\~\~\~ 
\~\~\~\~\~\~\~\~\~\~\~\~\~ }{\field{\*\fldinst {HYPERLINK  \\l "CreateRegion"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000043007200650061007400650052006500670069006f006e000000}}}{\fldrslt {\cs29\ul\cf2 Create}}}{ \line \~\~\~\~ 
\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~ }{\field{\*\fldinst {HYPERLINK  \\l "Regions"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000800000052006500670069006f006e0073000000}}}{\fldrslt {\cs29\ul\cf2 SubRegions}}}{  
\par }{\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz2\shplid1028{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}} 
{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}}{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8194 
\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par }\pard\plain \s18\qc\sb100\sa100\keepn\nowidctlpar\outlinelevel1\adjustright \b\fs48\kerning36 {\fs20 {\*\bkmkstart CPrinter}{\*\bkmkend CPrinter}Printer Class Documentation}{ 
\par }\pard\plain \qc\sb100\sa100\nowidctlpar\adjustright {\fs20 Class definitions located in CPrinter.h}{  
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\fs20  
Functions in CPrinter.cpp: This is a low-level printer function class. All calls from the higher-level functions will eventually get here to one of the printer primitives. To add functionality to the high level class(s) it is best to let the high level cl 
asses handle all formatting etc and call simple primitive output functions. This will make porting to a different output device or operating system a little easier. Below is the class definition of the low-level class CPrinter.}{  
\par }{\cs37\f2\fs20 class CPrinter\{}{ \line }{\cs37\f2\fs20 public:}{ \line }{\cs37\f2\fs20 \~\~\~ CPrinter();}{ \line }{\cs37\f2\fs20 \~\~\~ virtual ~CPrinter();}{ \line }{\cs37\f2\fs20 \~\~\~ virtual int GetPrintInfo(PRTTYPE *ps,double LineSpacing);}{  
\line }{\cs37\f2\fs20 \~\~\~ virtual int PrintText(PRTTYPE *ps,double LineSpacing);}{ \line }{\cs37\f2\fs20 \~\~\~ virtual void DrawLine(PRTTYPE *ps,int LineSize);}{ \line }{\cs37\f2\fs20 \~\~\~ virtual void DrawRect(PRTTYPE *ps,int LineSize);}{ \line }{ 
\cs37\f2\fs20 \};}{  
\par }{\fs20 int GetPrintInfo: This function will set internal variables without actually printing the output string. It is mainly used internally.}{  
\par }{\fs20 int PrintText: The workhorse. Just about every call gets routed here eventually. This function creat 
es a font each time it is called and calculates print parameters and changes internal variables. If the class is to slow this is where it can be sped up considerably. The return value is the next logical print line. It is calculated using the current map  
mode, font size, and spacing factor.}{  
\par }{\fs20 void DrawLine: Line drawing primitive. Very basic.}{  
\par }{\fs20 void DrawRect: Rectangle drawing function. Very basic.}{  
\par }{\fs20 The class user should call none of these functions. Use the higher level calls. However, if minimal print functionality is all that is needed this can be a standalone library and does have quite a bit of functionality}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{  
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz3\shplid1029 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8195\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\b\fs20\ul {\*\bkmkstart prttype}{\*\bkmkend prttype}PRTTYPE structure definition}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\fs20  
The PRTTYPE structure is used to hold information about the current print page and the current output string. It also retains information across printer calls that can be used in determining future output selections. It is defined below:}{  
\par }{\cs37\f2\fs20 typedef struct tagPrinter\{}{ \line }{\cs37\f2\fs20 \~\~\~ CDC *pDC;}{ \line }{\cs37\f2\fs20 \~\~\~ RECT rc;}{ \line }{\cs37\f2\fs20 \~\~\~ int PointSize;}{ \line }{\cs37\f2\fs20 \~\~\~ CString Text;}{ \line }{\cs37\f2\fs20 \~\~\~ 
 UINT uTextFlags;}{ \line }{\cs37\f2\fs20 \~\~\~ UINT uFillFlags;}{ \line }{\cs37\f2\fs20 \~\~\~ UINT uPenFlags;}{ \line }{\cs37\f2\fs20 \~\~\~ CString FontName;}{ \line }{\cs37\f2\fs20 \~\~\~ UINT n_maxWidth; // max width of formatting rect}{ \line }{ 
\cs37\f2\fs20 \~\~\~ UINT n_maxLength; // ditto len}{ \line }{\cs37\f2\fs20 \~\~\~ UINT n_minNextLine; // next posiible legible line}{ \line }{\cs37\f2\fs20 \~\~\~ int m_NextCharPos; // pos in line of next char}{ \line }{\cs37\f2\fs20 \~\~\~ 
 int m_MinDisplacement;}{ \line }{\cs37\f2\fs20 \~\~\~ RECT LastPrintArea; // printing rect last used}{ \line }{\cs37\f2\fs20 \~\~\~ TEXTMETRIC* tm;}{ \line }{\cs37\f2\fs20 \}PRTTYPE;}{  
\par }{\fs20 This structure is a member of the Cp 
age class and is maintained internally. It is initialized in the Cpage constructor using information passed. The TEXTMETRIC field ,LastPrintArea, and m_NextCharPos are calculated and changed by each call to PrintText(). The print behavior is modified by c 
hanging the uTextFlags and uPenFlags variable ( see definitions in CPrinter.h ) .The current output string is contained in the variable Text ( isn\rquote t that remarkable ). The parameters are set using information passed to the various output routines.} 
{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{  
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz4\shplid1030 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8196\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\b\fs20\ul {\*\bkmkstart cpage}{\*\bkmkend cpage}CPage Class Definitions}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\fs20 CPage contains most of the class functionality. CPage.H and CPage.Cpp contain the class headers and class definition.}{  
\par }{\fs20 All of the print routines have a new override added that takes a user supplied integer indentifier and passes it to a user suppled function that will return the text to be printed. This function must be in the form of: }{\b\fs20  
LPCSTR (*PF_REMOTE)(int)}{\fs20  which is defined in CPage.h. This function is set by a call to CPage::SetUserFunctio 
n(UserFunctionAddress). If this function is not called all the output routines called form the functions calling the user defined function will do no output and those that return a value will return 0. All of the Print and PrintColumn functions, including 
  
those that print to regions, have this over ride. The demo program has been updated to show these functions in a working example. These functions are included to make it easier to design a data independant form and to facilitate using the library as a por 
tion of a report generator, form generator, etc. See }{\b\fs20 PrintForm5(CPage* ps)}{\fs20  located in PrintForm1.cpp. A sample user defined function is shown below:}{  
\par }{\cs37\f2\fs20 LPCSTR MyFunction(int ID)}{ \line }{\cs37\f2\fs20 \{}{ \line }{\cs37\f2\fs20 \~\~\~ static CString S;}{ \line }{\cs37\f2\fs20 \~\~\~ switch(ID)}{ \line }{\cs37\f2\fs20 \~\~\~ \{}{ \line }{\cs37\f2\fs20 \~\~\~\~\~\~\~ case ID_1:}{ \line }{ 
\cs37\f2\fs20 \~\~\~\~\~\~\~\~\~\~\~ return "Called From User Function ID 1";}{ \line }{\cs37\f2\fs20 \~\~\~\~\~\~\~ case ID_2:}{ \line }{\cs37\f2\fs20 \~\~\~\~\~\~\~\~\~\~\~ return "Called From User Function ID 2";}{ \line }{\cs37\f2\fs20 \~\~\~\~\~\~\~ 
 case ID_3:}{ \line }{\cs37\f2\fs20 \~\~\~\~\~\~\~\~\~\~\~ return "Called From User Function ID 3";}{ \line }{\cs37\f2\fs20 \~\~\~\~\~\~\~ case ID_4:}{ \line }{\cs37\f2\fs20 \~\~\~\~\~\~\~\~\~\~\~ return "Called From User Function ID 4";}{ \line }{ 
\cs37\f2\fs20 \~\~\~\~\~\~\~ case ID_5:}{ \line }{\cs37\f2\fs20 \~\~\~\~\~\~\~\~\~\~\~ return "Called From User Function ID 5";}{ \line }{\cs37\f2\fs20 \~\~\~\~\~\~\~ case ID_6:}{ \line }{\cs37\f2\fs20 \~\~\~\~\~\~\~\~\~\~\~ S.Format("%.2f",120.90);}{  
\line }{\cs37\f2\fs20 \~\~\~\~\~\~\~\~\~\~\~ return S;}{ \line }{\cs37\f2\fs20 \}}{  
\par }{\cs37\f2\fs20 \~\~\~ return "*****unknown ID Passed*****";}{  
\par }{\cs37\b\f2\fs20 \}}{  
\par }{\fs20  
This is a very simple version of a user function but demonstrates how it is used. In real life it would be more complex and probably call other functions, do calculations, and other data manipulation tasks. Just as long as it returns a pointer to a output 
  
string all is well. The string is used immediatly and need not be persistant. Static buffers can be re-used between calls. However if CStrings or other variables are used as buffers be certain that they are either static or created on the heap and not des 
troyed until after use. Variables set on the stack frame will not be accessable to the output routines because they will go out of scope on he user function return. In order to set the call up you will call:}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz5\shplid1031 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 25400}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8197\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew40\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par }{\b\fs20 {\*\bkmkstart SetUserFunction}{\*\bkmkend SetUserFunction}CPage::SetUserFunction(MyFunction);}{  
\par }{\fs20 This can be called more than once thereby replacing the active function making it possible to have several output functions for the same page. The effect of this technique is a lot like subclassing t 
he CPage object but without the overhead. The user defined function should be prototyped as\~ }{\b\fs20 typedef LPCSTR (*PF_REMOTE)(int).}{\fs20  An example is :}{  
\par }{\cs37\f2\fs20 LPCSTR MyFunction(int ID)}{ \line }{\cs37\f2\fs20 \{}{ \line }{\cs37\f2\fs20 \~\~\~\~ switch(ID)}{ \line }{\cs37\f2\fs20 \~\~\~\~ \{}{ \line }{\cs37\f2\fs20 \~\~\~\~\~\~\~\~ case ID_1:}{ \line }{\cs37\f2\fs20 \~\~\~\~\~\~\~\~\~\~\~\~\~ 
 S="Called From User Function ID 1";}{ \line }{\cs37\f2\fs20 \~\~\~\~\~\~\~\~\~\~\~\~\~\~ return S;}{ \line }{\cs37\f2\fs20 \~\~\~\~\~\~\~\~ case ID_2:}{ \line }{\cs37\f2\fs20 \~\~\~\~\~\~\~\~\~\~\~\~\~ return "Called From User Function ID 2";}{ \line }{ 
\cs37\f2\fs20 \~\~\~ \}}{ \line }{\cs37\f2\fs20 \~\~\~ return "";}{ \line }{\cs37\f2\fs20 \}}{  
\par }{\fs20 There is a special over ride of the Print function:}{  
\par }{\b\fs20 virtual double Print(double row,double col,UINT TextFlags,int PointSize,int ID);}{  
\par }{\fs20 This function works in conjunction with the SeUserFunction in that the user defined function is called to supply the prit text. See the demo program for details.}{  
\par }{\fs20 Example:}{  
\par }{\cs37\f2\fs20 void PrintStuff(CPage* ps)}{ \line }{\cs37\f2\fs20 \{}{ \line }{\cs37\f2\fs20 \~\~\~\~ ps-SetUserFunction(MyFunction);}{ \line }{\cs37\f2\fs20 \~\~\~\~ double row=ps-Print(0.0,0.0,TEXT_NORMAL|TEXT_CENTER,24,"User Demo");}{ \line }{ 
\cs37\f2\fs20 \~\~\~\~ row=ps-Print(row,0.0,TEXT_BOLD|TEXT_ITALIC|TEXT_CENTER,24,ID_1);}{ \line }{\cs37\f2\fs20 \}}{  
\par }{\b\fs20 {\*\bkmkstart SetPrinterMode}{\*\bkmkend SetPrinterMode}static void SetPrinterMode(CDC* pDC,int Mode=DMORIENT_PORTRAIT);}{  
\par This function will change the printer orientation of the printer. }{\b\cf9 IT CANNOT BE CALLED AFTER THE CONSTRUCTOR}{ for Cpage is called and as such is a static member function. It must be called by a function in the function chain somewhere be 
fore the OnPrint() or OnDraw() function is called and after access to the CDC for the print job is available. The recommended place to call the static member function is your CView::OnPrepareDC() override. The CDC passed to this function will be changed b 
y this function call. The mode parameter must be either DMORIENT_PORTRAIT ( default ) or DMORIENT_LANDSCAPE.  
\par }{\b Example}{  
\par }{\cs37\f2\fs20 void CMainView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)}{ \line }{\cs37\f2\fs20 \{}{ \line }{\cs37\f2\fs20 \~\~\~ CView::OnPrepareDC(pDC, pInfo); // always call base class first}{ \line }{\cs37\f2\fs20 \~\~\~ swit 
ch(pInfo-m_nCurPage) // switch modes based on page number}{ \line }{\cs37\f2\fs20 \~\~\~ \{}{ \line }{\cs37\f2\fs20 \~\~\~\~\~\~\~ case 1:CPage::SetPrinterMode(pDC);break;}{ \line }{\cs37\f2\fs20 \~\~\~\~\~\~\~ 
 case 2:CPage::SetPrinterMode(pDC,DMORIENT_LANDSCAPE);break;}{ \line }{\cs37\f2\fs20 \~\~\~ \}}{ \line }{\cs37\f2\fs20 \}}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\b\fs18\cf9 DO NOT CALL THIS FUNCTION ONCE THE CONSTRUCTOR FOR CPAGE HAS EXECUTED.}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\fs20\cf9 For users not familiar with static member functions. The above code creates a CPage object on the stack and executes the member function. The function does not depend on or alter any da 
ta in the class so it needs no virtual table entry or a this pointer. ( as a matter of fact in CANNOT read or write and class data at all) There will be one and only one copy of the function created no matter how many CPage objects that there are. This is 
 a poor explanation of static member functions; please consult the MS documentation for details. HA!}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz6\shplid1032 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8198\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par \line }{\b\fs20 {\*\bkmkstart GetPrinterName}{\*\bkmkend GetPrinterName}static LPCSTR GetPrinterName(CDC* pDC);}{  
\par }{\fs20 This function will return the name of the selec 
ted printer driver in use for this CDC. The driver cannot be changed but can be used to switch between options. This function and the above function also demonstrates the method of get data from and changing data in a DEVMODE structure. This method can be 
 used to change paper size DPI etc for all supported printers,}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz7\shplid1033 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8199\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par \line }{\b\fs20 {\*\bkmkstart CpageConstruct}{\*\bkmkend CpageConstruct}CPage(RECT rectDraw, CDC* p_Dc, int MapMode=MM_ANISOTROPIC)}{  
\par }{\fs20 This is the class constructor. There is no private constructor override. This class is designed to be used in conjunction with MFC and makes use of the Cview class printing architecture. The parameters are:}{  
\par }{\fs20 RECT rectDraw The drawing rectangle to be used by this output device. ( see example )}{ \line }{\fs20 CDC* The display context object passed by MFC to the print function}{ \line }{\fs20  
Int mapMode The supported mapping modes are MM_TEXT and MM_ANISOTROPIC}{  
\par }{\fs20 Example of use:}{  
\par }{\cs37\f2\fs20 void CMainView::OnPrint(CDC* pDC, CPrintInfo* pInfo)}{ \line }{\cs37\f2\fs20 \{}{ \line }{\cs37\f2\fs20 \~\~\~ double Row,Col;}{ \line }{\cs37\f2\fs20 \~\~\~ CPage* ps= new CPage(pInfo-m_rectDraw,pDC,MM_TEXT);}{ \line }{\cs37\f2\fs20 \~\~ 
\~ Row=ps-Print(6.5,4.0,TEXT_NORMAL,10,"This is a test");}{ \line }{\cs37\f2\fs20 \~\~\~ delete ps;}{ \line }{\cs37\f2\fs20 \}}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz8\shplid1034 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8200\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par }{\b\fs20 {\*\bkmkstart Print}{\*\bkmkend Print}int Print(int row,int col,char* fmt,...); // }{\fs20 use cpage default parameteres for flags pt size etc..}{ \line }{\b\fs20 int Print(int row,int col,UINT TextFlags,int PointSize,char* fmt,...);}{  
\par }{\fs20 The workhorse. This function has many different }{\field{\*\fldinst {\fs20 HYPERLINK  \\l "note1"}{\fs20 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b0200000008000000060000006e006f007400650031000000}}}{\fldrslt {\cs29\fs20\ul\cf2 overloads}}}{ 
\fs20 *. All class functions are designed to use several different units of measurement. In MM_TEXT map mode the nativ 
e unit is pixels, which can vary from output device to output device. In MM_ANISOTROPIC the units are user defined in both axis. The default for this class is 1000 by 1000. The library can also function in terms of inches. The passed parameters are conver 
t 
ed to native units before being passed to lower level functions. Inches present the problem of being fractional in value and not integral. To facilitate the ease of use the library makes the following assumptions to all calls to the Print functions (With  
one exception noted below). }{\fs20\cf9 If the value is a double it is treated as a inch measurement. If one of the location variables (Row and Col) is a double the other must be a double also}{\fs20 . The parameters are:}{  
\par }{\fs20 Int row the vertical displacement for the print line. Displacement is relative to the top of the page.}{ \line }{\fs20 Int col the horizontal displacement for the print line. Displacement is relative to the left side}{ \line }{\fs20  
( both of these parameters can be doubles and if so are treated as inches )}{ \line }{\fs20 UINT Textflags Modify the appearance of the output string. See CPrinter.h}{ \line }{\fs20 Int PointSize The number of points to use for the font.}{ \line }{\fs20  
Char* fmt a printf type format string.}{ \line }{\fs20 Example of use:}{  
\par }{\cs37\f2\fs20 Void PrintStuff (CPage* ps)}{ \line }{\cs37\f2\fs20 \{}{ \line }{\cs37\f2\fs20 \~\~\~ Row=ps-Print(6.5,4.0,TEXT_NORMAL,10,"This is a test");}{ \line }{\cs37\f2\fs20 \~\~\~ Row=ps-Print(Row,4.0,TEXT_NORMAL,10,"This is a test Also");}{  
\line }{\cs37\f2\fs20 \~\~\~ Row=ps-Print(Row,4.0,TEXT_NORMAL,10,"This is a test Also as is this");}{ \line }{\cs37\f2\fs20 \~\~\~ Col=1.0;}{ \line }{\cs37\f2\fs20 \~\~\~ ps-Print(Row,&Col,TEXT_NORMAL,10,"This is a test Also as is this");}{ \line }{ 
\cs37\f2\fs20 \~\~\~ ps-Print(Row,&Col,TEXT_BOLD|TEXT_ITALIC,10,"This ");}{ \line }{\cs37\f2\fs20 \~\~\~ ps-Print(Row,&Col,TEXT_BOLD,10,"is Italic ");}{ \line }{\cs37\f2\fs20 \}}{  
\par }{\fs20\cf9 {\*\bkmkstart note1}{\*\bkmkend note1}*note}{ \line }{\cf9 Consult CPage.h for details on all the various overloads. There are many.}{  
\par }{\fs20\cf9 int Print(int row,int *col,UINT TextFlags,int PointSize,char* fmt,...) is a special 
 override that takes a pointer to the column variable. (See example above). On execution the column variable is updated to the next column position. Subsequent calls to Print using the variable will result in the output being a continuos line allowing dif 
f 
erent attributes to be assigned within a line of text. It is useful when printing a series of question/answer type forms also as the variable will point to the next logical horizontal print area at all times. There are also two overrides of this function  
that take only Row,Column, Text parameters and get the rest of the information from the defaults set into the CPage object.}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz9\shplid1035 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8201\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par }{\b\fs20 {\*\bkmkstart PrintColumn}{\*\bkmkend PrintColumn}void PrintColumn(int Top,int Left,int Bottom,int Right,UINT flags,int PointSize,LPCSTR Text);}{  
\par }{\fs20 Print function to allow for newspaper style print columns. The location variables function in the same manner as in Print() above but have two extra dimensions t 
o describe a bounding rectangle. All text will be printed in the rectangle. If the flags variable includes TEXT_RECT the bounding rectangle will be drawn on the output device. See Print() for variable usage.}{  
\par }{\fs20 ``}{  
\par }{\fs20 Example of use:}{  
\par }{\cs37\f2\fs20 Void PrintStuff (CPage* ps)}{ \line }{\cs37\f2\fs20 \{}{ \line }{\cs37\f2\fs20 \~\~\~ ps-PrintColumn(1.0,1.0,3.0,4.0,TEXT_BOLD|TEXT_RECT,8,}{ \line }{\cs37\f2\fs20 \~\~\~ "This is a test of the column wrap feature");}{ \line }{ 
\cs37\f2\fs20 \~\~\~ ps-PrintColumn(1.00,4.1,3.0,7.0,TEXT_BOLD,8,}{ \line }{\cs37\f2\fs20 \~\~\~ "This is a test of the column wrap feature ");}{ \line }{\cs37\f2\fs20 \}}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz10\shplid1036 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8202\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par }{\b\fs20 {\*\bkmkstart SetLineSpacing}{\*\bkmkend SetLineSpacing}double SetLineSpacing(double Spacing);}{  
\par }{\fs20 Set the constant used in calculating the next logical print line.. The amount needed to get the affect you want will vary so experiment. Should be no smaller than 1.0}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz11\shplid1037 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8203\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par }{\b\fs20 {\*\bkmkstart SetFont}{\*\bkmkend SetFont}LPCSTR SetFont(LPCSTR FontName);}{  
\par }{\fs20 Set the default font name. The constructor sets it to "Times New Roman". Spelling does count. The old font name is returned from this function. If all you want is the font name use SetFont(NULL) to return the current font name.}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz12\shplid1038 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8204\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par \line }{\b\fs20 {\*\bkmkstart SetFontSize}{\*\bkmkend SetFontSize}int SetFontSize(int sz);}{ \line }{\fs20 Set default font pointsize.}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz13\shplid1039 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8205\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par \line }{\b\fs20 {\*\bkmkstart SetColor}{\*\bkmkend SetColor}COLORREF SetColor(COLORREF Color);}{ \line }{\fs20 If the output device supports color set the current color here. Returns the old color.}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz14\shplid1040 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8206\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par \line }{\b\fs20 {\*\bkmkstart SetRightmargin}{\*\bkmkend SetRightmargin}virtual int SetRightMargin(int width)}{ \line }{\fs20 Change the size of the default printing rectangle right margin 
. A value of -1 will reset it to MaxWidth. A value of 0 will just return the current value.Returns the previous width.}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz15\shplid1041 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8207\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par \line }{\b\fs20 {\*\bkmkstart SetBottomMargin}{\*\bkmkend SetBottomMargin}int SetBottomMargin(int length);}{ \line }{\fs20 Same as above except the margin affected is the bottom}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz16\shplid1042 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8208\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par \line }{\b\fs20 double SetRightMargin(double width);}{ \line }{\fs20 See above}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz17\shplid1043 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8209\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par \line }{\b\fs20 double SetBottomMargin(double length);}{ \line }{\fs20 See Above}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz18\shplid1044 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8210\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par \line }{\b\fs20 {\*\bkmkstart GetDisplayContext}{\*\bkmkend GetDisplayContext}CDC* GetDisplayContext();}{ \line }{\fs20 Return the display context used for this page. Can be used for direct manipulation of the context}{  
\par }{\fs20 Example of use:}{  
\par }{\cs37\f2\fs20 Void PrintStuff (CPage* ps)}{ \line }{\cs37\f2\fs20 \{}{ \line }{\cs37\f2\fs20 \~\~\~ CDC* pDc}{ \line }{\cs37\f2\fs20 \~\~\~ pDc=ps-GetDisplayContext();}{ \line }{\cs37\f2\fs20 \}}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz19\shplid1045 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8211\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par }{\b\fs20 {\*\bkmkstart PrintBitMap}{\*\bkmkend PrintBitMap}void PrintBitMap(int top,int left,int bottom,int right,LPCSTR name);}{ \line }{\b\fs20 void PrintBitMap(double top,double left,double bottom,double right,LPCSTR name);}{  
\par }{\fs20 Prints a bitmap from a disk file into a r 
egion of the page. The numeric parameteres are location vectors for the bounding rectangle and the LPCSTR param is the name of the file to print. Disk based bitmaps are directly supported as there are many ways to print a resource bitmap.}{  
\par }{\fs20 Example of use:}{  
\par }{\cs37\f2\fs20 Void PrintStuff (CPage* ps)}{ \line }{\cs37\f2\fs20 \{}{ \line }{\cs37\f2\fs20 \~\~\~ ps-PrintBitMap(1.0,1.0,4.0,5.0,"MyBitMap.bmp");}{ \line }{\cs37\f2\fs20 \}}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz20\shplid1046 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8212\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par }{\b\fs20 {\*\bkmkstart GetNextLogCol}{\*\bkmkend GetNextLogCol}double GetNextLogicalColumn(BOOL Convert=TRUE,BOOL AddOffset=FALSE);}{  
\par }{\fs20 Returns the next logical print column based on the last call to Print(). This must not be used prior to a call to Print() as garbage will be returned. Parameters are:}{  
\par }{\fs20 BOOL Convert if true will return result in inches}{ \line }{\fs20 BOOL AddOffset if true will add extra space to column to give separation.}{ \line }{\fs20 Example of use:}{  
\par }{\cs37\f2\fs20 Void PrintStuff (CPage* ps)}{ \line }{\cs37\f2\fs20 \{}{ \line }{\cs37\f2\fs20 \~\~\~ double Col;}{ \line }{\cs37\f2\fs20 \~\~\~ ps-Print(6.5,4.0,TEXT_NORMAL,10,"This is a test");}{ \line }{\cs37\f2\fs20 \~\~\~ 
 Col=ps-GetNextLogicalColumn(TRUE);}{ \line }{\cs37\f2\fs20 \~\~\~ ps-Print(6.5,Col,TEXT_NORMAL|TEXT_ITALIC,10,"This is a test Also");}{ \line }{\cs37\f2\fs20 \}}{ \line }{\cs37\f2\fs20 Output will be "This is a test.}{\cs37\i\f2\fs20 This is a test also} 
{\cs37\f2\fs20 " starting 4 inches over and 6.5 inches down. The common usage is to apply special formatting to indivivual words in a sentence.}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz21\shplid1047 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8213\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par }{\b\fs20 {\*\bkmkstart Line}{\*\bkmkend Line}void Line(int top,int left,int bottom,int right,int LineSize=1,UINT flag=PEN_SOLID);}{ \line }{\b\fs20  
void Box(int top,int left,int bottom,int right,int LineSize=1,UINT Fillflags=FILL_NONE,UINT PenFlags=PEN_SOLID);}{  
\par }{\fs20 Drawing primitives exposed to user. Parameters can also be doubles. If so they represent inches.Parameters are:}{ \line }{\fs20 Int top,left,bottom,right: top/left define the position of the left starting point}{ \line }{\fs20  
Bottom/right the right.}{  
\par }{\fs20 In the case of a rectangle the points describe the bounding area to draw the rectangle around}{ \line }{\fs20 Int Linesize Determines thickness of the line used to draw the shape 1 is smallest}{ \line }{\fs20  
Int Fillflags determines if area is filled with color see CPrinter.h for definitions}{ \line }{\fs20 Int Penflags Pen type used to draw See CPrinter.h for definitions}{  
\par }{\fs20 Example of use:}{  
\par }{\cs37\f2\fs20 Void PrintStuff (CPage* ps)}{ \line }{\cs37\f2\fs20 \{}{ \line }{\cs37\f2\fs20 \~\~\~ ps-Line(5.0,0.0,5.0,8.0);}{ \line }{\cs37\f2\fs20 \~\~\~ ps-Line(0.0,4.0,10.0,4.0);}{ \line }{\cs37\f2\fs20 \~\~\~ ps-Box(4.0,3.0,6.0,5.0);}{ \line }{ 
\cs37\f2\fs20 \}}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz22\shplid1048 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8214\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par }{\b\fs20 {\*\bkmkstart CheckBox}{\*\bkmkend CheckBox}void CheckBox(LPSTR Caption,BOOL Data,int top,int left,int FontSize,int Direction=LABEL_RIGHT,int LineSize=2,UINT Fillflags=FILL_NONE,UINT TextFlags=TEXT_NORMAL|TEXT_NOCLIP|TEXT_SINGLELINE);}{  
\par }{\fs20 Draws a Checkbox on the output device. Parameters are :}{ \line }{\fs20 LPSTR Caption The text accompanying the checkbox}{ \line }{\fs20 BOOL Data The true/false expression to be shown}{ \line }{\fs20  
Int top,left The starting position to print the Checkbox. Can be doubles.If so units are inches.}{ \line }{\fs20 Int Direction either LABLE_RIGHT or LABEL_LEFT}{ \line }{\fs20 Int Linesize Thick 
ness of pen used to draw the boxUINT Fillflags If set to any value other than FILL_NONE the checkbox will use the fill color to fill the box rather than Xing the box}{ \line }{\fs20 UINT TextFlags Define text attributes (See CPrinter.h)}{  
\par }{\fs20 Example of use:}{  
\par }{\cs37\b\fs20 Void PrintStuff (CPage* ps)}{ \line }{\cs37\b\fs20 \{}{ \line }{\cs37\b\fs20 \~\~\~ ps-CheckBox("A Test",TRUE,1000,1000,12,LABEL_LEFT,2,FILL_BLACK,TEXT_BOLD);}{ \line }{\cs37\b\fs20 \~\~\~ 
 ps-CheckBox("A Test again",TRUE,1100,1000,6,LABEL_RIGHT,2,FILL_NONE,TEXT_BOLD);}{ \line }{\cs37\b\fs20 \~\~\~ ps-CheckBox("A Test",TRUE,8.0,1.0,12,LABEL_LEFT,2,FILL_BLACK,TEXT_BOLD);}{ \line }{\cs37\b\fs20 \~\~\~ 
 ps-CheckBox("A Test again",TRUE,9.0,1.0,6,LABEL_RIGHT,2,FILL_NONE,TEXT_BOLD);}{ \line }{\cs37\b\fs20 \}}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{  
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz23\shplid1049 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8215\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\line }{\b\fs20\ul {\*\bkmkstart Tables}{\*\bkmkend Tables}Tables}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\fs20 Tables are a method of showing tabul 
ar data. They are similar to a grid control, only printed. Many business forms are simply a series of tables. The table metaphor has been implemented by use of three helper classes:}{  
\par }{\b\fs20 class CPrintTable;}{ \line }{\b\fs20 class COLUMNDATA;}{ \line }{\b\fs20 class TABLEHEADER;}{ \line }{\fs20 TABLEHEADER is a very simple class that describes a table of data. It is described below.}{  
\par }{\cs37\fs20 class TABLEHEADER\{}{ \line }{\cs37\fs20 public:}{ \line }{\cs37\fs20 \~\~\~ ~TABLEHEADER();}{ \line }{\cs37\fs20 \~\~\~ TABLEHEADER();}{ \line }{\cs37\fs20 \~\~\~ 
 BOOL UseInches; // if set to true all points passed are considered to be in inches}{ \line }{\cs37\fs20 \~\~\~ BOOL AutoSize; // if set true will make all columns the same size}{ \line }{\cs37\fs20 \~\~\~ 
 UINT FillFlag; // see fillflags in CPrinter.h default FILL_NONE}{ \line }{\cs37\fs20 \~\~\~ Int PointSize; // Pointsize for header}{ \line }{\cs37\fs20 \~\~\~ Int LineSize; // line size}{ \line }{\cs37\fs20 \~\~\~ 
 Int NumColumns; // number of columns in the table}{ \line }{\cs37\fs20 \~\~\~ Int NumRows; // number of rows in the table}{ \line }{\cs37\fs20 \~\~\~ BOOL Border; // if true draw aborder around table default TRUE}{ \line }{\cs37\fs20 \~\~\~ 
 BOOL Vlines ; // if true separate items with vertical lines default TRUE}{ \line }{\cs37\fs20 \~\~\~ BOOL HLines; // if true separate items with horizontal lines default TRUE;}{ \line }{\cs37\fs20 \~\~\~ 
 BOOL HeaderOnly; // if true display header only (virtual table)}{ \line }{\cs37\fs20 \~\~\~ BOOL NoHeader; // if true only draw the boxes no headers}{ \line }{\cs37\fs20 \~\~\~ Int HeaderLines; // number of lines in header default 1}{ \line }{\cs37\fs20  
\~\~\~ int NumPrintLines;\~\~\~ // logical number of visable print lines per cell default 1}{ \line }{\cs37\fs20 \~\~\~ Double StartRow; // starting row position ( seeUseInches above )}{ \line }{\cs37\fs20 \~\~\~ 
 Double StartCol; // stating column position ( see UseInches above)}{ \line }{\cs37\fs20 \~\~\~ Double EndCol; // ending column position ( see UseInches)}{ \line }{\cs37\fs20 \~\~\~ Double EndR 
ow; // This is determined by the class and is available to the end user}{ \line }{\cs37\fs20 \~\~\~ COLUMNDATA ColDesc[20]; // see COLUMNDATA class description}{  
\par }{\cs37\fs20 \~\~\~ CprintTable* pClsTable; // ptr to object ownibg this header}{  
\par }{\cs37\fs20 \};}{  
\par }{\fs20 Example of use:}{  
\par }{\cs37\f2\fs20 TABLEHEADER* pTable=new TABLEHEADER;}{ \line }{\cs37\f2\fs20 pTable-PointSize=10;}{ \line }{\cs37\f2\fs20 pTable-UseInches=TRUE;}{ \line }{\cs37\f2\fs20 pTable-AutoSize=FALSE;}{ \line }{\cs37\f2\fs20 pTable-Border=TRUE;}{ \line }{ 
\cs37\f2\fs20 pTable-FillFlag=FILL_NONE;}{ \line }{\cs37\f2\fs20 pTable-NumColumns=3;}{ \line }{\cs37\f2\fs20 pTable-NumRows=6;}{ \line }{\cs37\f2\fs20 pTable-StartRow=3.5;}{ \line }{\cs37\f2\fs20 pTable-StartCol=.1;}{ \line }{\cs37\f2\fs20  
pTable-EndCol=8.0;}{ \line }{\cs37\f2\fs20 pTable-ColDesc[0].Init(4.0,"Coverages");}{ \line }{\cs37\f2\fs20 pTable-ColDesc[1].Init(3.0,"Limits of Liability");}{ \line }{\cs37\f2\fs20 pTable-ColDesc[2].Init(1.0,"Premium");}{ \line }{\cs37\f2\fs20  
ps-Table(pTable);}{ \line }{\cs37\f2\fs20 ps-Print(pTable,0,0,8,TEXT_LEFT,"Section I - Coverage A: Dwelling");}{ \line }{\cs37\f2\fs20 ps-Print(pTable,1,0,8,TEXT_LEFT,"Section I - Coverage A: Other Structures");}{ \line }{\cs37\f2\fs20 delete pTable;}{  
 
\par }{\fs20 Class COLUMNDATA is also a very simple class. Its total functionality is demonstrated above. It is a member of class TABLEHEADER and is created when it is and destroyed with it. Just use it  
to describe the columns width and caption. The width unit of measurement is determined by the TABLEHEADER UseInches variable.}{  
\par }{\cs37\f2\fs20 class COLUMNDATA}{ \line }{\cs37\f2\fs20 \{}{ \line }{\cs37\f2\fs20 \~\~\~ public:}{ \line }{\cs37\f2\fs20 \~\~\~ double Width;}{ \line }{\cs37\f2\fs20 \~\~\~ CString Text;}{ \line }{\cs37\f2\fs20 \~\~\~ COLUMNDATA() \{ 
Width=0;Text.Empty();\};}{ \line }{\cs37\f2\fs20 \~\~\~ Void Init(double nWidth,LPCSTR lpzText) \{Width=nWidth;Text=lpzText;\};}{ \line }{\cs37\f2\fs20 \};}{  
\par }{\fs20 Class CPrintTable is used internally and should not be exposed. It actually draws and fills the table with data. It is called and used by CPage . See the source code for details.}{  
\par }{\fs20 Tables are  
attached to the page by using the function CPage::Table(pValidTableHeader). Once the TABLEHEADER has been created and filled in pass it to the CPage class using this function. The Table is drawn on the output device at this point. The variable LastRow is  
filled in at this time and is available for use.If you are stacking tables this variable will tell you where to start the next table. See example below.}{  
\par }{\fs20 There is an overloaded Print() function in CPage that allows data to be inserted into the table:}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz24\shplid1050 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8216\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par }{\b\fs20 {\*\bkmkstart Printtable}{\*\bkmkend Printtable}virtual void Print(TABLEHEADER* TheTable,int row,int col,int PointSize,UINT TextFlags,char* fmt,...);}{  
\par }{\fs20 In creating a table if the data element NumPrintLines is greater than 1 each cell will be made large 
 enough to contain multiple print lines. The size will be determined from the font size used to create the table. If you use a smaller font in printing there may be more visible print lines than you specified. The standard Print(TABLEHEADER,...) overide o 
f the Print function will operate in a different manner if the value is set to more than 1. See CTable::InsertItem for details. Word wrap and text clipping is in affect unless overridden.}{  
\par }{\fs20 The Row and Col parameters that usually show position indicate the table row and column in this overload. Other than that it operates just like the CPage::Print() statement}{  
\par }{\fs20 Example of use:}{  
\par }{\fs20 ps-Table(pTable);}{ \line }{\fs20 double lastRow=pTable-EndRow;}{ \line }{\fs20 ps-Print(pTable,0,0,8,TEXT_LEFT,"Section I - Coverage A: Dwelling");}{ \line }{\fs20 ps-Print(pTable,1,0,8,TEXT_LEFT,"Section I - Coverage A: Other Structures");}{  
 
\par }{\fs20 That\rquote s all there is to using tables. They are used a lot in business forms and insurance applications.}{  
\par }{\b\fs20\cf9 REMEMBER IF YOU CREATE A TABLEHEADER USING NEW THAT YOU HAVE TO DELETE IT.THE CLASS WILL NOT AUTOMATICALLY DELETE THESE POINTERS.}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{  
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz25\shplid1051 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8217\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\line }{\b\fs20\ul {\*\bkmkstart Regions}{\*\bkmkend Regions}Regions}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\fs20  
Regions are a lot harder to describe than to use. A Region is a area of the page that you wish to treat as a single item. It may contain Text or checkboxes or columns. It may have a title and a border. If the location of the region moves then all of the d 
ata contained in the region moves with it. Many forms have areas that contain data on specific topics. Many times you\rquote  
ll get everything finished and someone will say "Boy it would be neat if that section was here and that one here". Regions are the cure for 
 that. The class CPrintRegion implements regions. It is really a very simple class. Data is put into Regions using, of course, overloaded versions of the }{\i\fs20\ul CPage::Print}{\fs20 () }{\i\fs20\ul CPage::PrintColumn}{\fs20 () and }{\i\fs20\ul  
CPage::CheckBox}{\fs20 () functions already described. The functions all take one extra parameter. A pointer to a CPrintRegion. You obtain a pointer to a CPrintRegion by calling one of these two functions defines in CPage:}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz26\shplid1052 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8218\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par }{\b\fs20 {\*\bkmkstart CreateRegion}{\*\bkmkend CreateRegion}virtual CPrintRegion* CPage::CreateRegion(double ptop,double pleft,double pbottom, double pright);}{ \line }{\b\fs20  
virtual CPrintRegion* CPage::CreateRegion(int ptop,int pleft,int pbottom, int pright);}{ \line }{\b\fs18 \~}{\b\fs20 CPrintRegion* CreateSubRegion(CPrintRegion* pParent,int ptop,int pleft,int pbottom, int pright);}{ \line }{\b\fs20 \~CPrintRe 
gion* CreateSubRegion(CPrintRegion* pParent,double ptop,double pleft,double pbottom, double pright);}{  
\par }{\fs20 As usual if the position is passed as a double we assume that all measurements are in inches.}{ \line }{\fs20 The only callable functions from CPrintRegion are DrawBorde 
r() and DrawTitle(). See the header file in CPage.H for details. Subregions are simply regions that are referenced to another region. A Subregion is completly contained in the parent region and all offsets are based on the parent region at creation. If th 
e parent region is moved the subregion moves with it.Usage of these functions are shown below.}{  
\par }{\fs20 Example of use:}{  
\par }{\cs37\fs20 Void PrintStuff (CPage* ps)}{ \line }{\cs37\fs20 \{}{ \line }{\cs37\fs20 \~\~\~ double Row;}{ \line }{\cs37\fs20 \~\~\~ CPrintRegion *Region1=ps-CreateRegion(1.0,1.0,2.0,4.0);}{ \line }{\cs37\fs20 \~\~\~ CPrintRegion *SubRegion1=ps-Cr 
eateSubRegion(Region1,0.0,1.0,2.0,2.0);}{  
\par }{\cs37\fs20 \~\~\~ Region1-DrawBorder();}{ \line }{\cs37\fs20 \~\~\~ SubRegion1-DrawBorder();}{ \line }{\cs37\fs20 \~\~\~ Region1-DrawTitle("The Title",8,TEXT_BOLD|TEXT_CENTER|TEXT_RECT,FILL_NONE);}{ \line }{\cs37\fs20 \~\~\~ 
 ps-CheckBox(Region1,"A Test",TRUE,.2,0.0,12,LABEL_LEFT,1,FILL_NONE,TEXT_BOLD);}{ \line }{\cs37\fs20 \~\~\~ Row=ps-Print(Region1,1.0,0.0,TEXT_NORMAL,14,"This is a test");}{ \line }{\cs37\fs20 \~\~\~ ps-Print(SubRegion1,0.0,0.0,TEXT_BOLD,"In subregion");}{ 
 \line }{\cs37\fs20 \}}{  
\par }{\b\fs20\cf9 DO NOT DELETE THE CPrintRegion POINTER RETURNED TO YOU. THE CPage CLASS MAINTAINS A LIST OF THESE AND FREES THEM WHEN THE DESTRUCTOR RUNS. DELETEING A CPrintRegion POINTER WILL RESULT IN A PAGE FAULT WHEN THE CLASS TRIES TO ACCESS THE ITEM.} 
{  
\par }{\fs20 There are overrides for all the line and box drawing routines. They work just like CPage::Line() and CPage::Box() with he exception  
of the first parameter which is a pointer to a CPrintRegion. They are not documented here but see the source code for details. They do provide some checking for parameter validity and assure that drawing only takes place within the region passed.. As usua 
l all offsets are relative to the region not the page. A offset of 0,0 refers to the first printable spot in the region, whereever it is located. If offsets are outside the region they are adjusted back to fit within the region.}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz27\shplid1053 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8219\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par }{\b\fs18 {\*\bkmkstart RotateText}{\*\bkmkend RotateText}void PrintRotatedText(double Top,double Left,double Bottom,double Right,UINT flags,int PointSize,LPCSTR Text,int angle);}{  
\par }{\fs20 This function allows one to print text rotated thru 360 degrees. The angle of orientation is expressed in 1/10 of a degree and represented as an integer for 0 to 3600. Parameters are}{ \line }{\fs20  
double Top,Left,Bottom,Right. Boundries of text clipping area. TEXT_NOCLIP should be used to rotate text thru non region areas.}{ \line }{\fs20 UINT Flags are the standard text flags}{ \line }{\fs20 int Point size is the font size}{ \line }{\fs20  
LPCSTR Text is , of course, the text}{ \line }{\fs20 int angle is the rotation angle expressed in 1/10 of a degree. Valid range is 0-3600.}{ \line }{\fs20 Example of use:}{  
\par }{\cs37\f2\fs20 void PrintForm6(CPage* ps)}{ \line }{\cs37\f2\fs20 \{}{ \line }{\cs37\f2\fs20 \~\~\~\~ CString s;}{ \line }{\cs37\f2\fs20 \~\~\~\~ double row=0.0;}{ \line }{\cs37\f2\fs20 \~\~\~\~ for(int y=0; y < 3600;y+=300)}{ \line }{\cs37\f2\fs20 \~\~ 
\~\~ \{}{ \line }{\cs37\f2\fs20 \~\~\~\~\~\~\~\~\~ s.Format("Rotated Text Demo:Factor %d",y);}{ \line }{\cs37\f2\fs20 \~\~\~\~\~\~\~\~\~ ps-PrintRotatedText(5.5,4.0,9.0,8.0,TEXT_BOLD|TEXT_NOCLIP,16,s,y);}{ \line }{\cs37\f2\fs20 \~\~\~\~ \}}{ \line }{ 
\cs37\f2\fs20 \}}{  
\par }\pard \qc\sb100\sa100\nowidctlpar\adjustright {\field{\*\fldinst {HYPERLINK  \\l "toc"}{{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000400000074006f0063000000}}}{\fldrslt {\cs29\ul\cf2 Back}}}{ 
\par }\pard \sb100\sa100\nowidctlpar\adjustright {\lang1024\cgrid {\shp{\*\shpinst\shpleft0\shptop240\shpright9360\shpbottom241\shpfhdr0\shpbxcolumn\shpbypara\shpwr3\shpwrk0\shpfblwtxt0\shpz28\shplid1054 
{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineColor}{\sv 13948116}}{\sp{\sn lineWidth}{\sv 22225}}{\sp{\sn shadowOffsetX}{\sv 0}}{\sp{\sn shadowOffsetY}{\sv -12700}} 
{\sp{\sn shadowOriginY}{\sv 32385}}{\sp{\sn fShadow}{\sv 1}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8220\dpline\dpptx0\dppty0\dpptx9360\dppty1\dpx0\dpy240\dpxsize9360\dpysize1\dplinew35\dplinecor212\dplinecog212\dplinecob212}}}}{ 
\par \line \~ \line \~ \line \~ \line \~ \line \~  
\par }}