亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日韩欧美区一区二| 成人精品视频.| 日韩欧美的一区二区| 蜜桃精品视频在线观看| 91麻豆精品国产91久久久更新时间| 一区二区三区中文在线| 欧美美女直播网站| 免费的国产精品| 国产网红主播福利一区二区| 成人18精品视频| 一区二区三区四区中文字幕| 91超碰这里只有精品国产| 久久黄色级2电影| 国产免费久久精品| 欧美色爱综合网| 激情图片小说一区| 亚洲蜜臀av乱码久久精品蜜桃| 欧美三级资源在线| 国产一区二区三区av电影| 亚洲乱码国产乱码精品精可以看| 欧美日韩精品免费观看视频| 精彩视频一区二区| 亚洲伦在线观看| 日韩欧美一卡二卡| 99精品视频在线观看| 日韩二区三区四区| 国产精品成人免费| 欧美大片日本大片免费观看| 99九九99九九九视频精品| 日韩主播视频在线| 中文字幕精品三区| 6080午夜不卡| av影院午夜一区| 美女一区二区在线观看| 亚洲精品乱码久久久久久久久| 日韩一区二区影院| 色999日韩国产欧美一区二区| 国内精品嫩模私拍在线| 亚洲狠狠丁香婷婷综合久久久| 欧美tickle裸体挠脚心vk| 日本韩国一区二区| 国产成人av电影在线| 日韩精品电影在线观看| 日韩一区中文字幕| 久久亚洲二区三区| 欧美日韩精品欧美日韩精品| 9久草视频在线视频精品| 久久se这里有精品| 五月天网站亚洲| 亚洲婷婷综合久久一本伊一区| 日韩欧美精品在线视频| 欧美精品高清视频| 欧洲精品一区二区| www.亚洲色图.com| 国产黄人亚洲片| 久久国产精品免费| 裸体在线国模精品偷拍| 视频一区在线视频| 午夜视频一区二区三区| 亚洲精品美国一| 亚洲欧美偷拍另类a∨色屁股| 国产日韩欧美激情| 久久精品一二三| 精品成人一区二区三区四区| 欧美一二区视频| 91精品国产综合久久久久久久久久| 欧洲国产伦久久久久久久| 97精品超碰一区二区三区| 国产成人在线视频网站| 国产成人综合自拍| 国产成人在线视频免费播放| 国产高清视频一区| 国产福利一区二区三区在线视频| 国产一区91精品张津瑜| 裸体一区二区三区| 国产一区二区调教| 国产一区二区女| 成人美女视频在线观看18| caoporn国产精品| 99久久99久久免费精品蜜臀| 色综合久久88色综合天天6| 色网站国产精品| 欧美在线观看视频一区二区| 欧美日韩精品高清| 538prom精品视频线放| 日韩欧美一区二区在线视频| 日韩免费观看高清完整版 | 视频一区在线视频| 日韩黄色片在线观看| 麻豆国产精品777777在线| 国产一区二区在线影院| 成人av动漫在线| 欧美午夜电影网| 精品美女一区二区三区| 国产精品久久久久久妇女6080| 亚洲欧美一区二区三区极速播放| 亚洲成a人v欧美综合天堂下载| 麻豆久久一区二区| 国产69精品久久777的优势| 91免费观看在线| 91精品国产91热久久久做人人| 欧美岛国在线观看| 中文字幕一区二区三区不卡在线| 亚洲精品欧美专区| 另类小说视频一区二区| 成人免费三级在线| 欧美高清激情brazzers| 久久综合久色欧美综合狠狠| 亚洲欧美日韩小说| 免费成人在线网站| 91无套直看片红桃| 欧美一区二区视频在线观看| 国产精品的网站| 日本亚洲一区二区| 99精品视频在线观看免费| 日韩三级.com| 亚洲婷婷在线视频| 久久国产乱子精品免费女| 色哟哟一区二区三区| 精品国产一区二区三区久久影院 | 欧美成人r级一区二区三区| 国产亚洲人成网站| 亚洲综合丁香婷婷六月香| 国产在线不卡一区| 欧美亚洲禁片免费| 国产农村妇女精品| 蜜桃91丨九色丨蝌蚪91桃色| 91在线国产观看| 久久亚洲一级片| 日韩高清国产一区在线| 99riav久久精品riav| 精品成人在线观看| 婷婷中文字幕综合| 色婷婷国产精品久久包臀| 久久中文字幕电影| 偷拍与自拍一区| 欧美午夜在线观看| 国产精品久久久久久亚洲毛片| 久久丁香综合五月国产三级网站 | 欧美二区三区的天堂| 成人免费在线播放视频| 国内成+人亚洲+欧美+综合在线| 欧美色视频在线观看| 亚洲视频免费看| 粉嫩一区二区三区性色av| 日韩欧美国产综合| 亚洲成人免费av| 在线观看一区二区视频| 一区在线观看视频| 成人激情视频网站| 中文字幕乱码一区二区免费| 国产精品一区二区不卡| 日韩精品一区二区在线| 男男成人高潮片免费网站| 欧美亚洲一区二区三区四区| 亚洲欧洲www| 91在线视频18| 一区二区免费视频| 色一情一伦一子一伦一区| 亚洲精品日日夜夜| a亚洲天堂av| 中文字幕在线观看不卡| av中文字幕不卡| 亚洲精品写真福利| 欧美视频一区二区| 亚洲国产成人va在线观看天堂| 91福利小视频| 首页国产丝袜综合| 日韩三级免费观看| 国产呦精品一区二区三区网站| 久久久久国产精品麻豆| 粉嫩av一区二区三区在线播放| 亚洲国产经典视频| 91视频免费观看| 亚洲成人高清在线| 欧美一级艳片视频免费观看| 男人操女人的视频在线观看欧美| 欧美一级生活片| 国产专区综合网| 欧美国产1区2区| 91福利视频网站| 青青草国产成人99久久| 精品精品国产高清a毛片牛牛| 国产一区二区在线免费观看| 国产精品美女久久久久久久网站| 色综合天天综合网国产成人综合天| 亚洲欧美国产毛片在线| 欧美乱熟臀69xxxxxx| 激情综合色播五月| 国产精品美女久久久久久久久| 91九色02白丝porn| 久久97超碰国产精品超碰| 国产偷国产偷亚洲高清人白洁| 一本大道久久a久久综合婷婷 | 精品国产髙清在线看国产毛片| 国产一区二区三区| 亚洲免费在线视频| 91精品国产麻豆国产自产在线| 丁香六月久久综合狠狠色| 一区二区三区中文字幕精品精品 |