亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ch21.htm

?? 24小時精通VC
?? HTM
?? 第 1 頁 / 共 3 頁
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"><HTML><HEAD>		<META NAME="GENERATOR" Content="Symantec Visual Page Mac 1.1">	<TITLE>Teach Yourself Visual C++&#174; 5 in 24 Hours -- Hour 21 -- Printing</TITLE></HEAD><BODY TEXT="#000000" BGCOLOR="#FFFFFF"><H1 ALIGN="CENTER"><IMG SRC="../button/sams.gif" WIDTH="171" HEIGHT="66" ALIGN="BOTTOM"BORDER="0"><BR><FONT COLOR="#000077">Teach Yourself Visual C++&#174; 5 in 24 Hours</FONT></H1><CENTER><P><A HREF="../ch20/ch20.htm"><IMG SRC="../button/previous.gif" WIDTH="128" HEIGHT="28"ALIGN="BOTTOM" ALT="Previous chapter" BORDER="0"></A><A HREF="../ch22/ch22.htm"><IMGSRC="../button/next.gif" WIDTH="128" HEIGHT="28" ALIGN="BOTTOM" ALT="Next chapter"BORDER="0"></A><A HREF="../index.htm"><IMG SRC="../button/contents.gif" WIDTH="128"HEIGHT="28" ALIGN="BOTTOM" ALT="Contents" BORDER="0"></A> <HR></CENTER><H1 ALIGN="CENTER"><FONT COLOR="#000077">- Hour 21 -<BR>Printing</FONT></H1><P>There are two primary output devices in Windows: the screen and the printer. Printingusing the MFC class library is much simpler than printing in a straight SDK and Cenvironment.</P><P>In this hour, you will learn<UL>	<LI>The support provided for printing using the Document/View architecture<BR>	<BR>		<LI>The differences between printer and screen display output<BR>	<BR>		<LI>How to manage GDI resources used for printing</UL><P>You also will create a sample program to demonstrate how printing is done fora Document/View application.<H2><FONT COLOR="#000077"><B>What Is Printing in a Windows Program?</B></FONT></H2><P>Programs written for Windows should be hardware independent. This extends to theprinter, where all output is performed through device contexts, much as displaysto the screen are done.</P><P>Many programs written for Windows need no hard copy output. However, many programscan benefit by providing reports or other information in a printout. The Document/Viewarchitecture and MFC class library provide standard printing functionality to allSDI and MDI applications.</P><P>Historically, printing in a program written for Windows has been a nightmare.Using the traditional SDK approach, seemingly dozens of function calls and structuresmust be used to send output to a printer. Because Windows supports literally hundredsof printers, en-suring that printed output is printed correctly can be difficult.</P><P>The Document/View architecture and the MFC class library help make creating hard-copyprintouts in a Windows program much easier. You can use the Common Print dialog boxand reuse view functions that are used to display information on the screen.</P><P>Printing in an MFC program is almost effortless. If your program uses the Document/Viewarchitecture and does all of its drawing in the <TT>OnDraw</TT> function, you mightnot need to do anything to get basic printing to work. The source code provided inListing 21.1 is an example of a simple <TT>OnDraw</TT> function that can be usedfor screen and printer output.<H4><FONT COLOR="#000077">TYPE: Listing 21.1. A simple OnDraw function that worksfor the screen and the printer.</FONT></H4><PRE><FONT COLOR="#0066FF"><TT>void CPrintView::OnDraw(CDC* pDC)</TT><TT>{</TT><TT>    CString szMsg = &quot;Hello printer and view example.&quot;;</TT><TT>    pDC-&gt;TextOut( 0, 50, szMsg );</TT></FONT></PRE><P><TT>}</TT> Using the view's <TT>OnDraw</TT> member function is an easy way totake advantage of the hardware independence offered by Windows. If your code is portableenough to run on a variety of screen displays, you probably will get an acceptableprintout using most printers available for Windows.</P><P>On the other hand, there are many cases in which you might want to get more involvedin the printing. For example, if your view is not WYSIWYG, the printed output mightnot be suitable. If your view is a form view, for example, you might want to printyour document's data in another form, such as a list of items in the entire documentor detailed information about an item in the current form.</P><P>When you customize the view functions that are responsible for printing, you canalso offer nice user interface elements such as headers, footers, page numbers, orspecial fonts.<H3><FONT COLOR="#000077"><B>Understanding the MFC Printing Routines</B></FONT></H3><P>The following lists the <TT>CView</TT> routines used to print a view:<UL>	<LI><TT>OnPreparePrinting</TT>, called before the Common Print dialog box is displayed<BR>	<BR>		<LI><TT>OnBeginPrinting</TT>, where GDI resources specific to using the printer should	be allocated<BR>	<BR>		<LI><TT>OnPrepareDC</TT>, called once per page, just before the printout begins<BR>	<BR>		<LI><TT>OnPrint</TT>, called to actually draw to the printer's DC<BR>	<BR>		<LI><TT>OnEndPrinting</TT>, called once after all pages have been printed or after	the job is canceled; this is where GDI resources specific to using the printer are	released</UL><P>These member functions are called by the MFC framework as the print routine progresses.The relationship between these routines is shown in Figure 21.1.</P><P><A NAME="01"></A><A HREF="01.htm"><B>Figure 21.1.</B></A> <BR><I><TT>CView</TT> member functions called while printing a document.</I></P><P>As shown in Figure 21.1, only the <TT>OnPrepareDC</TT> and <TT>OnPrint</TT> memberfunctions are called for every page sent to the printer. The other functions areused to initiate variables in preparation of the printout or to clean up and freeresources after the printout has been completed.</P><P>When AppWizard creates a view class for your program, the <TT>OnPreparePrinting</TT>,<TT>OnBeginPrinting</TT>, and <TT>OnEndPrinting</TT> functions are automaticallyprovided for you. You can add the other member functions with ClassWizard if youmust override the basic functionality.<H3><FONT COLOR="#000077"><B>Creating an MFC Printing Example</B></FONT></H3><P>As an example of the MFC print functions, create a small program that displaysinformation to the screen and the printer. To begin, create an SDI or MDI projectnamed MFCPrint using ClassWizard.</P><P>With ClassWizard, add two message-handling functions for the <TT>CMFCPrintView</TT>class: <TT>OnPrepareDC</TT> and <TT>OnPrint</TT>. You'll find out more about <TT>OnPrepareDC</TT>and <TT>OnPrint</TT> in the next few sections. The other printing functions havealready been included in the <TT>CMFCPrintView</TT> class by AppWizard.</P><P>Add five new member variables and two new functions to the implementation sectionof the <TT>CMFCPrintView</TT> class, as shown in Listing 21.2.<H4><FONT COLOR="#000077">TYPE: Listing 21.2. New CPrintView member variables.</FONT></H4><PRE><FONT COLOR="#0066FF"><TT>protected:</TT><TT>    int     m_nCurrentPrintedPage;</TT><TT>    CFont*  m_pFntBold;</TT><TT>    CFont*  m_pFntBanner;</TT><TT>    CFont*  m_pFntHighlight;</TT><TT>    CPen    m_penBlack;</TT><TT>    void PrintHeader(CDC* pDC);</TT></FONT></PRE><P><TT>void PrintFooter(CDC* pDC);</TT> These new member variables and functionsare used during the printout.<H3><FONT COLOR="#000077"><B>Exploring the <TT>CPrintInfo</TT> Class</B></FONT></H3><P>The <TT>CPrintInfo</TT> class is used to store information about the current stateof a printout. A pointer to a <TT>CPrintInfo</TT> object is passed as a parameterto functions involved in the printout. You can access attributes of the <TT>CPrintInfo</TT>object for information about the printout, or in some cases you can change the attributesto customize the printout. Here are the most commonly used <TT>CPrintInfo</TT> members:<UL>	<LI><TT>m_bPreview</TT> is a flag that is set to <TT>TRUE</TT> if the document is	being previewed.<BR>	<BR>		<LI><TT>m_bContinuePrinting</TT> is a flag that is set to <TT>FALSE</TT> to stop	the print loop.<BR>	<BR>		<LI><TT>m_nCurPage</TT> contains the currently printing page number.<BR>	<BR>		<LI><TT>m_rectDraw</TT> contains the current printout rectangle.<BR>	<BR>		<LI><TT>SetMinPage</TT> sets the document's first page number.<BR>	<BR>		<LI><TT>SetMaxPage</TT> sets the document's last page number.<BR>	<BR>		<LI><TT>GetMinPage</TT> returns the value previously set as the document's first	page number.<BR>	<BR>		<LI><TT>GetMaxPage</TT> returns the value previously set as the document's last page	number.<BR>	<BR>		<LI><TT>GetFromPage</TT> returns the number of the first page being printed.<BR>	<BR>		<LI><TT>GetToPage</TT> returns the number of the first page being printed.</UL><P>Some of these members are used in a particular function. As you learn about eachfunction in the next few sections, commonly used <TT>CPrintInfo</TT> members willbe discussed.<H3><FONT COLOR="#000077"><B>Using the <TT>OnPreparePrinting</TT> Function</B></FONT></H3><P>AppWizard generates the <TT>OnPreparePrinting</TT> function for a project's initialview class. This function is called before the Common Print dialog box is displayed,and it gives you an opportunity to change the values displayed in the Print dialogbox.</P><P>If your document has more than one page, you should calculate the number of pages,if possible. This allows the maximum number of pages to be displayed in the Printdialog box. You can set the number of pages by calling the <TT>CPrintInfo::SetMaxPages</TT>function:</P><PRE><FONT COLOR="#0066FF"><TT>pInfo-&gt;SetMaxPages( 2 );</TT></FONT></PRE><BLOCKQUOTE>	<P><HR><B> </B><FONT COLOR="#000077"><B>CAUTION:</B></FONT><B> </B>You should not allocate	resources in the <TT>CPrintInfo::SetMaxPages</TT> func-tion because you are not notified	if the user cancels the Print dialog box. <HR></BLOCKQUOTE><H3><FONT COLOR="#000077"><B>Using the <TT>OnBeginPrinting</TT> Function</B></FONT></H3><P>The <TT>OnBeginPrinting</TT> function is called after the user has pressed OKin the Print dialog box in order to start the printout. This function is the properplace to allocate resources such as fonts, brushes, and pens that might be neededfor the printout. In the example you work with later, this function is used to create<TT>CFont</TT> objects.</P><P>This function is called only once for each printout. If this function is called,the <TT>OnEndPrinting</TT> function is called after the printout is finished in orderto give you a chance to free resources allocated in the <TT>OnBeginPrinting</TT>function.<H3><FONT COLOR="#000077"><B>Using the <TT>OnPrepareDC</TT> Function</B></FONT></H3><P>The <TT>OnPrepareDC</TT> function is called just before a page is printed or displayedin the view. If <TT>OnPrepareDC</TT> is called with the <TT>CPrintInfo</TT> pointerset to <TT>NULL</TT>, the document is not being printed.</P><P>This function often is overridden for multiple-page documents in order to continuethe printout over multiple pages. To print another page, set the <TT>CPrintInfo::m_bContinue</TT>member variable to <TT>TRUE</TT>:</P><PRE><FONT COLOR="#0066FF"><TT>pInfo-&gt;m_bContinuePrinting = TRUE;</TT></FONT></PRE>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲精品超碰| 美女视频黄频大全不卡视频在线播放| 欧美一区二区三区日韩| 久久精品国产一区二区三区免费看| 国内成人自拍视频| 久久久久综合网| 中文字幕一区二区在线播放| 久久久久成人黄色影片| 欧美国产禁国产网站cc| 国产精品久久久久毛片软件| 欧美国产日韩在线观看| 日本精品视频一区二区| 国产99精品视频| 91碰在线视频| 欧美日韩国产在线观看| 欧美日韩一区在线观看| 久久久久免费观看| 石原莉奈一区二区三区在线观看| 中文字幕字幕中文在线中不卡视频| 亚洲欧美日韩在线| 国产美女视频一区| 久久久精品日韩欧美| 亚洲精品乱码久久久久久黑人| 国产中文字幕精品| 日韩一区二区三区四区| 美国十次综合导航| 日韩欧美激情在线| 久久99精品久久久久久国产越南| 欧美日韩一区 二区 三区 久久精品| 综合电影一区二区三区| 色婷婷久久99综合精品jk白丝| 欧美激情一区二区三区| 成人免费在线视频| 亚洲欧洲综合另类在线| 欧美一区二区播放| 精品视频全国免费看| 一本大道综合伊人精品热热| 午夜欧美大尺度福利影院在线看 | 一区二区三区四区不卡在线 | 成人激情综合网站| 国产精品麻豆网站| 欧美日韩第一区日日骚| 久久国产精品第一页| 国产精品美女久久久久久久久久久| 成人av高清在线| 国产精品不卡在线| 在线不卡中文字幕播放| 国产精品91一区二区| 亚洲永久免费视频| 欧美精品一区二区三区蜜桃| 成人免费观看av| 日本欧美加勒比视频| 亚洲视频狠狠干| 26uuu亚洲综合色欧美| 色婷婷综合中文久久一本| 国产一区二区精品久久| 亚洲一区二区三区在线看| 成人免费小视频| 欧美videos中文字幕| 欧美在线观看18| 不卡影院免费观看| 丁香激情综合五月| 国产乱子伦一区二区三区国色天香| 亚洲妇女屁股眼交7| 午夜私人影院久久久久| 丝袜美腿成人在线| 精品一区二区免费在线观看| 国产成人精品aa毛片| 91福利国产精品| 欧美一区二区三区视频免费| 91片黄在线观看| 欧美精品久久久久久久多人混战| 青娱乐精品视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲综合丁香婷婷六月香| 亚洲午夜激情网站| 久久激情五月婷婷| 成人av电影免费在线播放| 欧美体内she精高潮| 日韩精品一区二区三区视频在线观看| 日韩欧美国产一区二区在线播放 | 国产电影一区在线| 欧美性大战久久| 久久久天堂av| 亚洲一区二区五区| 国产成人精品一区二区三区四区 | 久久久久久久久久看片| 亚洲免费av在线| 久久精品国产亚洲5555| 一本色道久久综合狠狠躁的推荐| 麻豆精品一区二区三区| 色婷婷精品久久二区二区蜜臂av | 欧美伊人久久久久久久久影院| 欧美日韩精品专区| 《视频一区视频二区| 久久国产精品一区二区| 欧美亚洲国产一区二区三区va| 欧美本精品男人aⅴ天堂| 亚洲成av人片www| 91极品美女在线| 亚洲欧美一区二区久久| 91在线porny国产在线看| 中文字幕中文字幕在线一区 | 亚洲精品免费看| 97精品视频在线观看自产线路二| 久久中文娱乐网| 精品一区二区三区不卡 | 亚洲综合男人的天堂| 色综合欧美在线视频区| 一区二区三区免费在线观看| 欧美自拍偷拍午夜视频| 日韩和欧美的一区| 日韩精品一区在线| 成人一区二区三区| 亚洲黄色小视频| 欧美一区二区三区性视频| 日本美女视频一区二区| 国产精品午夜在线| 欧美人与z0zoxxxx视频| 成人综合在线观看| 五月天亚洲精品| 久久婷婷色综合| 欧美日韩一区小说| 成人久久18免费网站麻豆 | 欧美mv日韩mv国产网站| 成年人午夜久久久| 麻豆国产欧美日韩综合精品二区| 久久精品人人爽人人爽| 欧美天堂一区二区三区| 成人av电影免费在线播放| 日本sm残虐另类| 亚洲午夜久久久久久久久久久| www国产精品av| 91麻豆精品国产91久久久更新时间| 丁香天五香天堂综合| 免费久久精品视频| 午夜私人影院久久久久| 亚洲午夜久久久久久久久久久| 国产精品嫩草99a| 国产三级欧美三级| 2023国产精品| 久久精品网站免费观看| 日韩你懂的在线观看| 日韩欧美国产系列| 亚洲精品一区二区三区在线观看| 欧美精品久久久久久久多人混战| 欧美日韩在线电影| 欧美日韩久久一区二区| 欧美成人国产一区二区| 久久精品人人爽人人爽| 中文字幕一区二区三区在线不卡| 亚洲欧美综合色| 香蕉乱码成人久久天堂爱免费| 偷拍亚洲欧洲综合| 蜜乳av一区二区三区| 国产精品自拍毛片| 成人a区在线观看| 制服.丝袜.亚洲.中文.综合 | 国产91综合网| 欧美三级在线看| 国产欧美一区二区三区在线看蜜臀| 自拍视频在线观看一区二区| 亚洲精品成人精品456| 日本不卡视频在线观看| 成人涩涩免费视频| 欧美刺激午夜性久久久久久久| 亚洲欧美综合在线精品| 国产成a人亚洲精| 欧美私人免费视频| 欧美xxxxxxxxx| 日韩一区精品视频| 日韩精品电影在线| av一区二区三区在线| 日韩视频免费观看高清完整版 | 秋霞av亚洲一区二区三| av电影一区二区| 91精品国产麻豆国产自产在线| 精品va天堂亚洲国产| 亚洲天堂a在线| 国产综合色在线视频区| 色吊一区二区三区| 久久综合99re88久久爱| 日韩电影一二三区| 欧美日韩视频第一区| 1024精品合集| 成人av网址在线| 精品国一区二区三区| 奇米在线7777在线精品| 国产精品1区2区| 欧美不卡视频一区| 毛片av一区二区三区| 日韩色在线观看| 琪琪久久久久日韩精品| 26uuu色噜噜精品一区二区| 国产在线看一区| 国产视频911| 色婷婷综合久久久中文字幕| 一区二区免费在线| 在线播放中文字幕一区| 另类人妖一区二区av|