盘绰网教程:是一个免费提供流行视频软件教程、在线学习分享的学习平台!

VC数据库编程中的打印控制

时间:2024/12/28作者:未知来源:盘绰网教程人气:


[摘要]FF—DONTCARE, HFONTNAME)    return FALSE;    return TRUE;   void CDlgDataPrint::DoClearPrintDC()   /...
FF—DONTCARE, HFONTNAME)

   return FALSE;

   return TRUE;}

  void CDlgDataPrint::DoClearPrintDC()

  // 清除打印场景

  { m—fontPrint.DeleteObject();

   m—DC.Detach();

   ::DeleteDC( m—hDC );}

  void CDlgDataPrint::DoPrint()

  // 实际打印输出

  { if(DoPreparePrintDC()==FALSE) return;

   // 开始一次打印作业

   CString str;

   str.LoadString(AFX—IDS—APP—TITLE);

   DOCINFO di;

   ::ZeroMemory (&di, sizeof (DOCINFO));

   di.cbSize=sizeof (DOCINFO);

   di.lpszDocName=str;

   m—DC.StartDoc(&di);

   m—DC.StartPage();

   // 将打印字体选进设备场景

   CFont* pOldFont=m—DC.SelectObject(&m—fontPrint);

   // 输出报表,建议用CDC::DrawText()函数便于控制打印范围

   ...

   // 终止打印作业

   m—DC.EndPage();

   m—DC.EndDoc();

   m—DC.SelectObject(pOldFont);

   // 清除打印场景

   DoClearPrintDC();}

  表格问题

  对格式固定或表头、表体比较复杂的情况,特别是有嵌套表格的情况下,我们认为先将打印结果以文本形式写入一临时文件,然后再对文件进行打印输出的方法会使事情简单一些。因为这样在程序中就可以只关心数据(表体)的输出,而表头则可以固定格式存入数据库。

  但是,我们在对文本形式的报表进行打印输出时却发现一个有趣的现象,有时输出结果的相邻两行表格竖线不能对齐,而有时又可以。原来是 Windows 图形输出的问题,只要我们在建立打印字体时,字体的高度是偶数就可保证竖线对齐,如果是奇数则不能对齐。知道了原因,在建立打印字体时只需加入如下代码即可:

  ...

  #define  FONTSIZE 14

  #define  HFONTNAME ″宋体″

  // 建立打印字体,m—fontPrint是定义为CFont m—fontPrint的类成员变量

  int nFontHeight=MulDiv(FONTSIZE,-cyInch, 72);

  if(nFontHeight % 2) nFontHeight++;

  if(!m—fontPrint.CreateFont(nFontHeight, 0, 0, 0, FW—NORMAL, 0, 0,0,GB2312—CHARSET, OUT—CHARACTER—PRECIS, CLIP—CHARACTER—PRECIS,DEFAULT—QUALITY, DEFAULT—PITCH

关键词:  VC数据库编程中的打印控制





Copyright © 2012-2018 盘绰网教程(http://www.panchuo.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版