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

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

?? apc.htm

?? 21天學會VC的英文版
?? HTM
?? 第 1 頁 / 共 4 頁
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"><HTML><HEAD>	<META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=iso-8859-1"><SCRIPT LANGUAGE="JavaScript"><!--function popUp(pPage) { var fullURL = document.location; var textURL = fullURL.toString(); var URLlen = textURL.length; var lenMinusPage = textURL.lastIndexOf("/"); lenMinusPage += 1; var fullPath = textURL.substring(0,lenMinusPage); popUpWin = window.open('','popWin','resizable=yes,scrollbars=no,width=525,height=394'); figDoc= popUpWin.document; zhtm= '<HTML><HEAD><TITLE>' + pPage + '</TITLE>'; zhtm += '</head>'; zhtm += '<BODY bgcolor="#FFFFFF">'; zhtm += '<IMG SRC="' + fullPath + pPage + '">'; zhtm += '<P><B>' + pPage + '</B>'; zhtm += '</BODY></HTML>'; window.popUpWin.document.write(zhtm); window.popUpWin.document.close(); // Johnny Jackson 4/28/98 }//-->                                                                </SCRIPT><link rel="stylesheet" href="/includes/stylesheets/ebooks.css">	<META NAME="GENERATOR" Content="Symantec Visual Page Mac 1.1.1">	<TITLE>Teach Yourself Visual C++ 6 in 21 Days -- Appendix C -- Printing and Print Previewing</TITLE></HEAD><BODY TEXT="#000000" BGCOLOR="#FFFFFF"><H1 ALIGN="CENTER"><IMG SRC="../button/sams.gif" WIDTH="171" HEIGHT="66" ALIGN="BOTTOM"BORDER="0"><BR>Teach Yourself Visual C++ 6 in 21 Days</H1><CENTER><P><A HREF="../apb/apb.htm"><IMG SRC="../button/previous.gif" WIDTH="128" HEIGHT="28"ALIGN="BOTTOM" ALT="Previous chapter" BORDER="0"></A><A HREF="../apd/apd.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">- C -<BR>Printing and Print Previewing</H1><H1></H1><UL>	<LI><A HREF="#Heading1">Using the Framework's Functionality</A>	<UL>		<LI><A HREF="#Heading2">Using Default Print Functionality</A>		<LI><A HREF="#Heading4">Overriding OnPrint()</A>		<LI><A HREF="#Heading5">Using the Printer Device Context</A>		<LI><A HREF="#Heading6">Maintaining the Aspect Ratio</A>	</UL>	<LI><A HREF="#Heading7">Pagination and Orientation</A>	<UL>		<LI><A HREF="#Heading8">Setting the Start and End Pages</A>		<LI><A HREF="#Heading9">Using the Print Dialog Box</A>		<LI><A HREF="#Heading10">Using Portrait and Landscape Orientations</A>		<LI><A HREF="#Heading11">Adding GDI Objects with OnBeginPrinting()</A>		<LI><A HREF="#Heading12">Customizing Device Context Preparation</A>		<LI><A HREF="#Heading13">Aborting the Print Job</A>	</UL>	<LI><A HREF="#Heading14">Direct Printing Without the Framework</A>	<UL>		<LI><A HREF="#Heading15">Invoking the Print Dialog Box Directly</A>		<LI><A HREF="#Heading16">Using StartDoc() and EndDoc()</A>		<LI><A HREF="#Heading17">Using StartPage() and EndPage()</A>	</UL></UL><P><HR SIZE="4"><BR><I>by Jon Bates</I></P><P><I></I><H2><A NAME="Heading1"></A>Using the Framework's Functionality</H2><P>The SDI and MDI frameworks created by the AppWizard add the hooks for printingand previewing by default. These can be turned off by unchecking the Printing andPrint Preview option in Step 4 of the MFC AppWizard, but generally they are usefulto include in any project and add very little overhead. Most of the real work ofprinting is taken care of by the device context and GDI. The framework presents youwith a device context for a print document page; you can treat it pretty much asif it's a normal window device context.</P><P><H3><A NAME="Heading2"></A>Using Default Print Functionality</H3><P>The SDI (Single Document Interface) framework supports printing images from viewsbased on information held in the document. Because this information is already displayedin your applications views, you can probably print it by modifying the view to addprinting support.</P><P>The framework calls your OnDraw() function in the view to display an image. Thereis a corresponding OnPrint() function that it calls to let your view handle printingthe information. Often this task is simply a case of using the same drawing codeas you've implemented in your OnDraw() function. If this is so, you don't actuallyneed to implement the OnPrint() function; the framework does this by default in theCView base class and calls OnDraw(). The printer is then treated just like it wouldbe for a screen because it offers a device context for the drawing functions to use,as a substitute for the usual screen device context. Your OnDraw() function can determinewhether the device context it is passed is a screen or printer device context, butbecause the drawing functions will work in the same way on both, even this knowledgeisn't necessary.</P><P>You can explore the printing functionality added by the standard framework bycreating a standard SDI application with the AppWizard. Leave the Printing and PrintPreview option in Step 4 checked (this means you can click Finish<B> </B>on Step1) and name the project PrintIt.</P><BLOCKQUOTE>	<P><HR><B>STANDARD PRINT FRAMEWORK SUPPORT</B><BR>	</P>	<P>The standard print and print preview support is available only in SDI and MDI	applications. Dialog box-based applications must implement their own printing support.<HR></BLOCKQUOTE><P>The first thing you'll need is a graphic to print. You can create a graphicaltest display in the OnDraw() function of my CPrintItView class (just a normal CView)as shown in Listing C.1. This test displays a line-art style picture with some centralizedtext in a large font (see Figure C.1). The test image isn't too important, but itwill make a useful comparison between printed output and screen display.</P><P><H4>LISTING C.1.&nbsp;LST23_1.CPP--DRAWING IN OnDraw TO PRODUCE A PRINT SAMPLE.</H4><PRE>1:  void CPrintItView::OnDraw(CDC* pDC)2:  {3:      CPrintItDoc* pDoc = GetDocument();4:      ASSERT_VALID(pDoc);5:6:      // TODO: add draw code for native data here7:8:      // ** Set metric mapping9:      pDC-&gt;SetMapMode(MM_LOMETRIC);10:11:      // ** Declare and create a font 2.2cm high12:      CFont fnBig;13:      fnBig.CreateFont(220,0,0,0,FW_HEAVY,FALSE,FALSE,0,14:          ANSI_CHARSET,OUT_DEFAULT_PRECIS,15:          CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,16:          FF_SWISS+VARIABLE_PITCH,&quot;Arial&quot;);17:18:      //** Select the new font and store the original19:      CFont* pOldFont = pDC-&gt;SelectObject(&amp;fnBig);20:21:      //** Declare a client rectangle22:      CRect rcClient;23:      GetClientRect(&amp;rcClient);24:25:      // ** Convert to logical units26:      pDC-&gt;DPtoLP(&amp;rcClient);27:28:      // ** Set up some drawing variables29:      const int nPoints = 50;30:      int xm = rcClient.Width();31:      int ym = rcClient.Height();32:      double dAspW = xm/(double)nPoints;33:      double dAspH = ym/(double)nPoints;34:35:      // ** Select a black pen36:      CPen* pOldPen = 37:           (CPen*)pDC-&gt;SelectStockObject(BLACK_PEN);38:39:      // ** Draw the lines40:      for(int i=0;i&lt;nPoints;i++)41:      {42:          int xo = (int)(i * dAspW);43:          int yo = (int)(i * dAspH);44:45:          pDC-&gt;MoveTo(xo,0);46:          pDC-&gt;LineTo(xm,yo);47:          pDC-&gt;LineTo(xm-xo,ym);48:          pDC-&gt;LineTo(0,ym-yo);49:          pDC-&gt;LineTo(xo,0);50:      }51:52:      // ** Reselect the old pen53:      pDC-&gt;SelectObject(pOldPen);54:55:      // ** Draw the text on top56:      pDC-&gt;SetTextAlign(TA_CENTER+TA_BASELINE);57:      pDC-&gt;SetBkMode(TRANSPARENT);58:</PRE><PRE>59: // ** Set gray text</PRE><PRE>60:      pDC-&gt;SetTextColor(RGB(64,64,64));61:      pDC-&gt;TextOut(xm/2,ym/2,&quot;Sample Print&quot;);62:63:      // ** Reselect the old font64:      pDC-&gt;SelectObject(pOldFont);65:  }</PRE><P><A HREF="javascript:popUp('23fig01.gif')"><B>FIGURE C.1.</B></A><B> </B><I>Graphicaltest output of PrintIt in a window.a</I></P><P>Although there is a fair bit of code in this OnDraw() function, none of it isunusual. It just draws lines inside the client rectangle and writes some text inthe middle. Notice at line 9, the mapping mode is set to MM_LOMETRIC; this sets thelogical coordinates to tenths of a millimeter.</P><P>A 2.2cm high font is created at line 13 and used to draw the sample text at line61. Lines 40 to 50 draw the arty &quot;peg and string&quot; frame using the clientrectangle coordinates. I'll let you decipher the details; the important thing hereis to investigate the business of printing.</P><P>If you build and run the program after adding these lines to the OnDraw() functionof Listing C.1, you should see a graphical display in your application window, asshown in Figure C.1.</P><P>So the big question is this: What must you do to print this image output? Surprisinglylittle--because the standard framework tries to print this by calling your OnDraw()function and passing the device context for the printer rather than for the window.</P><P>If you click the File<B> </B>menu of the PrintIt application and choose PrintPreview, you'll see a small representation of the image in the top-left corner, althoughthe font is too big for the line drawing. This isn't the framework's fault; it hasdone its best to represent your window, but it was passed the wrong coordinates forthe device context. The problem lies with the GetClientRect()used in line 23.</P><P>Notice that GetClientRect() is a member of the view, not of the device context.This works fine for the window because the device context is the same size as thewindow rectangle. Now you're passing the window rectangle to the printer device context(which is small in comparison) but creating a 2.2cm high font that is always thesame size (because of the mapping mode).</P><P><H3><A NAME="Heading4"></A>Overriding OnPrint()</H3><P>To fix the client rectangle coordinate size problem, you must pass the correctrectangle for the printer rather than the window. Fortunately, the framework callsa virtual function that you can override in your view and use to find all the informationyou need. As you read earlier, this function is named OnPrint() and is analogousto OnDraw(). When drawing in a window, OnDraw() is called; when drawing on a printer,OnPrint() is called. You might be wondering how the drawing code in OnDraw() wasexecuted to print preview the sample graphical display. The default CView implementationof OnPrint() simply calls OnDraw(), passing its printer device context.</P><P>Your OnPrint() doesn't have to call OnDraw(); you can override OnPrint() to makeit draw something entirely different, but many applications must print out what theuser sees. These applications reuse their OnDraw() code with the printer device context.</P><P>To override the OnPrint() virtual function, perform the following steps:</P><P><DL>	<DT></DT>	<DD><B>1. </B>Click the ClassView tab of the Project Workspace view.	<P>	<DT></DT>	<DD><B>2. </B>Click the top plus sign to open the view of the project classes.	<P>	<DT></DT>	<DD><B>3. </B>Right-click the view class to which you want to add the OnPrint() override	(such as CPrintItView in the PrintIt example) to display the context menu.	<P>	<DT></DT>	<DD><B>4. </B>Select the Add Virtual Function option to display the New Virtual Override	dialog box.	<P>	<DT></DT>	<DD><B>5. </B>You should see an OnPrint virtual function in the New Virtual Functions	list.	<P>	<DT></DT>	<DD><B>6. </B>Click the Add and Edit button to start editing the OnPrint() virtual	function.	<P></DL><P>The standard override for OnPrint() looks like this:</P><P><PRE>void CPrintItView::OnPrint(CDC* pDC, CPrintInfo* pInfo){    // TODO: Add your specialized code here     CView::OnPrint(pDC, pInfo);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美综合另类在线卡通| 日本欧美一区二区三区乱码| 欧美大片在线观看一区| 欧美电影在线免费观看| 精品视频1区2区3区| 欧美日韩国产色站一区二区三区| 欧美特级限制片免费在线观看| 91福利资源站| 欧美日本乱大交xxxxx| 欧美激情一区二区三区在线| 日本一区二区视频在线观看| 中文字幕一区二区三区乱码在线 | 亚洲精品第一国产综合野| 亚洲激情校园春色| 顶级嫩模精品视频在线看| 成人美女视频在线观看18| 99re视频精品| 欧美年轻男男videosbes| 国产欧美日韩综合精品一区二区| 日韩av在线发布| 欧美日韩一区在线观看| 日韩美女视频一区二区| 亚洲国产精品一区二区久久| 日本中文字幕一区二区视频| 色哟哟一区二区| 91在线观看成人| 欧美肥胖老妇做爰| 亚洲成人午夜影院| 国产成人丝袜美腿| 欧美日韩视频一区二区| 亚洲免费av高清| 精品综合久久久久久8888| a4yy欧美一区二区三区| 国产精品成人一区二区艾草 | 日韩一级视频免费观看在线| 久久伊99综合婷婷久久伊| 亚洲欧洲综合另类在线| 成人精品gif动图一区| 欧美日韩久久久| 亚洲亚洲精品在线观看| 欧美系列在线观看| 五月天国产精品| av在线播放一区二区三区| 国产精品久久久久影院色老大| 国产一区二区三区不卡在线观看 | 欧美精品一二三区| 日韩高清一区二区| 日韩欧美中文字幕制服| 国产白丝网站精品污在线入口| 激情小说亚洲一区| 日产精品久久久久久久性色| 欧日韩精品视频| 国产亚洲欧洲一区高清在线观看| 亚洲一区二区av在线| 波多野结衣中文一区| 18成人在线视频| 色婷婷av久久久久久久| 午夜精品福利在线| 欧美电影免费观看高清完整版在线观看 | 成人激情小说网站| 亚洲视频小说图片| 欧美美女直播网站| 国产麻豆一精品一av一免费 | 精品电影一区二区三区| 日本欧美肥老太交大片| 精品成人一区二区三区四区| 成人白浆超碰人人人人| 五月婷婷综合在线| 国产亚洲一区二区三区四区| 色婷婷狠狠综合| 久久99九九99精品| 亚洲欧美国产三级| 欧美va亚洲va在线观看蝴蝶网| 五月天丁香久久| 国产日韩成人精品| 欧美日韩国产小视频在线观看| 国精品**一区二区三区在线蜜桃| 亚洲欧美日韩一区| 精品国产伦一区二区三区免费 | 激情久久五月天| 亚洲人成网站影音先锋播放| 日韩欧美国产高清| 在线观看一区日韩| 国产91精品入口| 免费观看久久久4p| 2023国产精品自拍| 欧美在线你懂的| 国产.精品.日韩.另类.中文.在线.播放| 亚洲午夜一区二区| 中文字幕在线不卡一区二区三区 | 欧美日韩久久久久久| 成人av综合一区| 国内成人免费视频| 日本亚洲天堂网| 亚洲国产综合色| 最好看的中文字幕久久| 国产精品三级av在线播放| 91视频xxxx| 国产不卡在线播放| 蜜桃免费网站一区二区三区| 国产欧美日韩精品一区| 日韩欧美国产三级| 538在线一区二区精品国产| 国内精品久久久久影院色| 日本va欧美va精品| 亚洲成人综合在线| 亚洲高清视频中文字幕| 伊人一区二区三区| 亚洲欧美电影一区二区| 18成人在线视频| 国产精品久久久久久久蜜臀| 久久精品日产第一区二区三区高清版| 日韩午夜中文字幕| 精品少妇一区二区三区在线播放| 制服丝袜激情欧洲亚洲| 这里只有精品视频在线观看| 欧美乱妇23p| 欧美一区二区三区在线观看视频| 岛国av在线一区| 国产不卡在线一区| 成人成人成人在线视频| 91碰在线视频| 欧美午夜视频网站| 在线观看91av| 精品剧情在线观看| 久久你懂得1024| 日韩一区二区精品在线观看| 日韩欧美一区二区不卡| 欧美tk丨vk视频| 中文字幕巨乱亚洲| 亚洲人123区| 亚洲777理论| 精久久久久久久久久久| 成人一区二区三区在线观看 | 韩国欧美一区二区| 国产91精品在线观看| av网站一区二区三区| 色成人在线视频| 91精品国产色综合久久不卡电影| 日韩欧美成人激情| 国产亚洲综合性久久久影院| 亚洲特级片在线| 午夜精品福利久久久| 精品一区二区三区免费播放| 成人网页在线观看| 欧美三区在线观看| 久久蜜桃av一区二区天堂| 国产精品久久久久久福利一牛影视| 亚洲免费在线电影| 蜜桃91丨九色丨蝌蚪91桃色| 成人免费视频播放| 欧美一区二区私人影院日本| 日本一区二区成人| 日本美女视频一区二区| 成人免费高清视频| 91精品国产综合久久福利软件| 国产区在线观看成人精品 | 日本一区二区视频在线| 亚洲福利一二三区| 国产v日产∨综合v精品视频| 欧美综合欧美视频| 国产午夜精品久久久久久久| 亚洲一区二区三区中文字幕| 国产精品香蕉一区二区三区| 国产精品一卡二| 精品视频一区二区三区免费| 国产亚洲1区2区3区| 午夜精品成人在线视频| 暴力调教一区二区三区| 亚洲精品一区二区三区福利| 亚洲国产综合视频在线观看| 粉嫩蜜臀av国产精品网站| 欧美一级片在线看| 亚洲综合激情小说| yourporn久久国产精品| 久久免费国产精品| 青青草伊人久久| 欧美性猛交xxxxxx富婆| 国产精品久久久久久妇女6080 | 亚洲成av人综合在线观看| a亚洲天堂av| 久久久精品免费免费| 久久激情五月激情| 不卡一区二区在线| 久久久亚洲欧洲日产国码αv| 午夜免费欧美电影| 欧美日韩一区久久| 一区二区三区在线视频观看58| 亚洲成人午夜影院| 欧美专区亚洲专区| 一区二区三区四区不卡在线| 99在线精品免费| 国产精品日韩精品欧美在线| 国产精品主播直播| 日韩免费观看高清完整版| 日本不卡123| 精品国产电影一区二区 | 一区二区三区不卡视频在线观看| 成人激情文学综合网| 国产精品色噜噜|