📄 6-2.htm
字号:
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'>
</span>docInfo.lpszDatatype = NULL;<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'> </span>docInfo.fwType =
0;<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'> <o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'> </span>result =
StartDoc(printDC, &docInfo) ;<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'> </span>if (result
<=0 )<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'> </span>{<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'>
</span>MessageBox(0, “StartDoc() failed” ,<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'>
</span>“Basic Print App”, MB_OK | MB_ICONERROR) ;<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'>
</span>return;<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'> </span>}<o:p></o:p></span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>如果调用</span><span lang=EN-US>StartDoc() </span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>成功,则可以通过调用</span><span
lang=EN-US>StartPage() </span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>来打印第一页。</span><span lang=EN-US>StartPage() </span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>函数只有单一参数,即打印机的</span><span
lang=EN-US>DC</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>。函数调用成功则返回大于零的值,否则返回小于或等于零的值。打印第一页的代码类似如下程序片断:</span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'> </span>result =
StartPage(printDC) ;<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'> </span>if (result <=
0 )<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'> </span>{<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'>
</span>MessageBox(0, “StartPage() failed”,<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'>
</span>“Basic Print App” , MB_OK | MB_ICONERROR<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'>
</span>return;<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'> </span>}<o:p></o:p></span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>一旦开始打印第一页,那么只需要把输出导向打印机</span><span lang=EN-US>DC</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>。由于屏幕上的点的大小与大多数打印机上的点的大小不同,所以通常还需要缩放发往打印机的数据。</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>打印一页之后,可调用</span><span lang=EN-US>EndPage() </span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>函数以结束当前页。与</span><span
lang=EN-US>StartPage() </span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>一样,</span><span lang=EN-US>EndPage() </span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>需要打印机</span><span
lang=EN-US>DC</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>作为其惟一的参数。并且,</span><span lang=EN-US>EndPage() </span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>调用成功,则返回大于零的值;如果不成功,返回零或小于零的值。结束一页的代码类似于如下片断:</span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'> </span>result =
EndPage(printDC) ;<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'> </span>if (result <=
0 )<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span style='mso-spacerun:yes'> </span><span
style='mso-spacerun:yes'> </span>{<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'>
</span>MessageBox(0, “EndPage() = failed” ,<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'>
</span>“Basic Print App” , MB_OK | MB_ICONERROR<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'>
</span>return;<o:p></o:p></span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'> </span>}<o:p></o:p></span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>至此,应用程序可再一次调用</span><span lang=EN-US>StartPage() </span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>以打印另一页,也可调用</span><span
lang=EN-US>EndDoc() </span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>以结束打印任务:</span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'><span
style='mso-spacerun:yes'> </span>EndDoc(printDC)
;<o:p></o:p></span></span></p>
<h4><span style='mso-bookmark:_Toc16587483'><a name="_2._在MFC应用程序中打印文本"></a><span
lang=EN-US><span style='mso-spacerun:yes'> </span>2. 在MFC应用程序中打印文本</span></span></h4>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>进一步地,如果使用</span><span lang=EN-US>MFC AppWizard</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>来组装应用程序,可以十分容易地获得基本的打印和打印预览功能。</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>为了获得这种功能,要确保在</span><span lang=EN-US>AppWizard</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>的“</span><span
lang=EN-US>Step 4 of 6</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>”对话框中选择“</span><span lang=EN-US>Printing and print preview (</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>打印和打印预览</span><span
lang=EN-US>) </span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>”选项,使</span><span lang=EN-US>AppWizard</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>应用程序可获得打印机的名称和获取打印机</span><span
lang=EN-US>DC</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>的所有细节。读者只需要改进所生成的源代码就能够为应用程序产生适当的打印输出。</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>使用</span><span lang=EN-US>MFC</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>的缺省打印功能时,应用程序的文档都在</span><span
lang=EN-US>OnDraw() </span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>函数中屏幕显示和发送到打印机。所不同的是,在屏幕显示的情况下,发送到</span><span lang=EN-US>OnDraw()
</span></span><span style='mso-bookmark:_Toc16587483'><span style='font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>的</span><span
lang=EN-US>DC</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>对象是客户窗口;在打印的情况下,</span><span lang=EN-US>DC</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>用于当前打印机。</span><span
lang=EN-US>DC</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>切换的灵活运用使某一函数既能向屏幕输出,也能向打印机输出,使产生</span><span lang=EN-US>WYSIWYG
(What You See Is What You Get</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>,所见即所得</span><span lang=EN-US>) </span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>更加容易。</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>除了以正确的尺寸缩放打印机输出外,还可能要处理页码、页眉和页脚、字体以及</span><span lang=EN-US>Windows</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>应用程序为打印具有专业外观的文档而必须完成的其他任务。</span><span
lang=EN-US>MFC</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>不仅通过创建打印机描述环境,而且通过在</span><span lang=EN-US>CView</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>类中提供在各阶段都能够使视图窗口访问打印过程的各种成员函数,从而进行大量的打印文档的作业。</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>当编写带有打印功能的</span><span lang=EN-US>MFC</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>程序时,通常需要为指定的应用程序改进缺省的</span><span
lang=EN-US>MFC</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>打印功能。</span><span lang=EN-US>CView</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>类</span><span
lang=EN-US> (</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>可从中派生自己的应用程序视图窗口</span><span lang=EN-US>) </span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>定义了五个用于打印的</span><span
lang=EN-US>MFC</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>成员函数:</span><span lang=EN-US>OnPreparePrinting() </span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>、</span><span
lang=EN-US>OnBeginPrinting() </span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>、</span><span lang=EN-US>OnPrepareDC() </span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>、</span><span
lang=EN-US>OnPrint() </span></span><span sty
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -