网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
VC数据库编程中的打印控制
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式

  short cxInch=m_DC.GetDeviceCaps(LOGPIXELSX);
  short cyInch=m_DC.GetDeviceCaps(LOGPIXELSY);
  //建立打印字体,m_fontPrint是定义为CFont m_fontPrint的类成员变量
  if (!m_fontPrint.CreateFont(MulDiv(FONTSIZE,-cyInch,
72),
  0,0,0,FW_NORMAL,0,0,0,
  GB2312_CHARSET,OUT_CHARACTER_PRECIS,CLIP_CHA
RACTER_PRECIS,
  DEFAULT_QUALITY,DEFAULT_PITCH|FF—DONTCARE,HFONTNAME)
  return FALSE;
  return TRUE;
  }
  void CDlgDataPrint::DoClearPrintDC()//清除打印场景
  {
   m_fontPrint,Delete0bject();
   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* p0ldFont=m_DC.Select0bject(&m_fontPrint);
  //输出报表,建议用CDC::DrawText()函数便于控制打印范围……
  //终止打印作业
  m_DC,EndPage();
  m_DC.EndDoc();
  m_DC.Select0bject(p0ldFont);
  //清除打印场景
  DoClearPrintDC();
  }

  二、 表格问题

  人们常用的报表格式几乎都是封闭式的,要实现这种报表不外乎两种方法:一是在进行打印输出时直接绘制横线和竖线,这种方法适用于报表格式不固定或格式较简单的情况,对那种格式固定或表头和表体比较复杂的情况,特别是有嵌套表格的情况下,我们认为先将打印结果以文本形式写入一个临时文件,然后再对文件进行打印输出的方法要使事情简单一些,因为这样的程序就可以只关心数据(表体)的输出,而表头则可以固定格式存入数据库。但是,我们在对文本形式的报表进行打印输出时却发现一个有趣的现象,有时输出结果的相邻两行表格竖线不能对齐,而有时又可以。原来是Windows图形输出的结果,只要我们在建立打印字体时,字体的高度是偶数就可保证竖线对齐,如果是奇数则不能对齐。知道了原因,在建立打印字体时只需:

  ……
   #define FONTSIZE 14
  //建立打印字体,m_fontPrint是定义为CFont m_fontPrint的类成员变量
  int nFontHeight=MulDiv(FONTSIZE,-cyInch,72);
  if (nFontHeight % 2)nFontHeight++;
  if (!m_fontPrint.CreateFont(nFontHeight,0,0,0, FW_NORM
AL,0,0,0,
  GB2312_CHARSET,OUT_CHARACTER_PRECIS,CLIP_CHA
RACTER_PRECIS,
  DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,HFONTNAME)
  return FALSE;
  ……

  还有一点小技巧,输出文本形式的报表时,对报表的横线只需要输出其正常高度的二分之一或三分之一,这样报表看起来更紧凑美观。这也是我们在前面建议用CDC::DrawText()进行绘制输出的原因。

  • 上一篇资讯: 文件操作API和CFile类
  • 下一篇资讯: 打印编程API函数类标
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号