在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細頁面

VC數(shù)據(jù)庫編程中的打印控制

VC數(shù)據(jù)庫編程中的打印控制

更新時間:2022-05-02 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

VC數(shù)據(jù)庫編程中的打印控制比較復(fù)雜,但它也給程序員最大的靈活性,而這種靈活性正是我們需要的。因為各行業(yè)、部門的報表一般都不太規(guī)整,特別是表頭部分,二、三重嵌套的情況很常見。下面我們就開發(fā)中碰到的一些問題與同行們探討。

  Document/View框架之外的打印

  熟悉VC的程序員都知道Microsoft 的AppWizard生成的應(yīng)用程序框架中,可以選擇免費的打印及打印預(yù)覽功能,但前提是必須選擇Document/View結(jié)構(gòu)。然而我們的數(shù)據(jù)庫應(yīng)用中一般都不需要一個文檔類來保存文檔,因為數(shù)據(jù)庫(源)就是我們的文檔,數(shù)據(jù)一般是在一個對話框或視中與用戶交互,編輯或修改結(jié)果直接通過數(shù)據(jù)庫引擎寫回數(shù)據(jù)庫中。我們的程序主框架要么是基于對話框的、要么是基于無文檔類的單視(或多視)結(jié)構(gòu),在這種情況下,AppWizard 在打印控制部分并不能給我們?nèi)魏螏椭荒茏约贺撠?zé)完成打印控制。

  總結(jié)起來,一次打印操作要遵循以下步驟:

  1.得到或生成打印設(shè)備場景,可通過顯示打印對話框讓用戶選擇打印機與紙張等設(shè)置,也可在程序中直接取系統(tǒng)缺省打印機設(shè)置,然后根據(jù)報表格式設(shè)置紙張大小和打印方向;

  2.開始在該設(shè)備場景中的一次打印作業(yè),實際打印報表內(nèi)容,終止打印作業(yè);

  3.清除打印設(shè)備場景,完成本次打印操作。

  在下面的例子中,我們在一個對話框中讓用戶選擇打印某個報表,沒有顯示打印設(shè)置對話框,而是直接取系統(tǒng)缺省打印機設(shè)置,然后根據(jù)報表格式設(shè)置紙張大小和打印方向。之所以這樣做是因為各行業(yè)、部門的報表格式一般都是至上而下的統(tǒng)一格式。函數(shù)DoPreparePrintDC()、DoPrint()和DoClearPrintDC()分別對應(yīng)上述的三個步驟:

  BOOL CMyDialog::DoPreparePrintDC()

  // 準(zhǔn)備打印場景

  {

   #define  FONTSIZE 14

   // 獲取打印機的設(shè)備屬性

   CPrintDialog dlgPrint( FALSE );

   // 得到當(dāng)前系統(tǒng)缺省打印機設(shè)置

   if(!dlgPrint.GetDefaults()) return FALSE;

   LPDEVMODE pDM=dlgPrint.GetDevMode();

   if(pDM==NULL) return FALSE;

   ::GlobalUnlock(pDM);

   // 聯(lián)結(jié)打印DC,m—hDC是定義為HDC m—hDC的類成員變量

   m—hDC=dlgPrint.CreatePrinterDC();

   // m—DC是定義為CDC m—DC的類成員變量

   if(!m—DC.Attach(m—hDC) return FALSE;

   // 設(shè)置打印標(biāo)志

   m—DC.m—bPrinting=TRUE;

   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—CHARACTER—PRECIS,DEFAULT—QUALITY, DEFAULT—PITCH|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;

   // 開始一次打印作業(yè)

   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();

   // 將打印字體選進設(shè)備場景

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

   // 輸出報表,建議用CDC::DrawText()函數(shù)便于控制打印范圍

   ...

   // 終止打印作業(yè)

   m—DC.EndPage();

   m—DC.EndDoc();

   m—DC.SelectObject(pOldFont);

   // 清除打印場景

   DoClearPrintDC();}

  表格問題

  對格式固定或表頭、表體比較復(fù)雜的情況,特別是有嵌套表格的情況下,我們認(rèn)為先將打印結(jié)果以文本形式寫入一臨時文件,然后再對文件進行打印輸出的方法會使事情簡單一些。因為這樣在程序中就可以只關(guān)心數(shù)據(jù)(表體)的輸出,而表頭則可以固定格式存入數(shù)據(jù)庫。

  但是,我們在對文本形式的報表進行打印輸出時卻發(fā)現(xiàn)一個有趣的現(xiàn)象,有時輸出結(jié)果的相鄰兩行表格豎線不能對齊,而有時又可以。原來是 Windows 圖形輸出的問題,只要我們在建立打印字體時,字體的高度是偶數(shù)就可保證豎線對齊,如果是奇數(shù)則不能對齊。知道了原因,在建立打印字體時只需加入如下代碼即可:

  ...

 。efine  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 | FF—DONTCARE, HFONTNAME))

   return FALSE;

  ...

  還有一點小技巧,輸出文本形式的報表時,對報表的橫線只需要輸出其正常高度的二分之一或三分之一,這樣報表看起來更緊湊美觀。這也是我們在前面建議用CDC::DrawText()進行繪制輸出的原因。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 久久99久久99精品| 黄色免费网址大全| 免费国产成人av| 2021狠狠干| 天堂在线中文在线| 日韩欧美xxxx| 97国产在线播放| av影院在线播放| 色综合天天色综合| 农村妇女精品一二区| 午夜剧场在线免费观看| 国产精品免费看久久久无码| 超碰在线人人爱| 欧美日韩激情视频在线观看| 成年人深夜视频| 日本一二三区视频在线| 亚欧美在线观看| 成人性做爰aaa片免费看不忠| 日本中文字幕片| av无码久久久久久不卡网站| 欧美性视频在线播放| 污视频网站观看| 激情五月婷婷久久| 国产极品美女高潮无套久久久| 一本—道久久a久久精品蜜桃| 亚洲欧美手机在线| 日韩在线不卡一区| www.51色.com| 亚洲三级在线观看视频| 天天综合网久久| 日本黄大片一区二区三区| 亚洲色图 在线视频| 蜜臀av免费观看| 日本黄大片一区二区三区| 91亚洲精品久久久蜜桃借种| 亚洲欧美国产中文| 国产精品久久成人免费观看| 国产精品久久久影院| 女人床在线观看| 成熟丰满熟妇高潮xxxxx视频| 国产一级不卡毛片| 亚洲这里只有精品| 在线播放免费视频| 男人日女人的bb| 日韩中文字幕三区| 玖玖爱视频在线| 日韩欧美一级在线| 国产一区二区三区精彩视频 | 欧美 日韩精品| www.日本xxxx| 中文字幕永久有效| 亚洲精品偷拍视频| 免费看一级大黄情大片| 蜜臀视频一区二区三区| 肉色超薄丝袜脚交| 男人添女人下部高潮视频在观看| 午夜久久久精品| 台湾无码一区二区| 日韩一区二区三区不卡视频| 2021狠狠干| 亚洲乱码中文字幕久久孕妇黑人| av 日韩 人妻 黑人 综合 无码| 亚洲精品怡红院| 中文字幕の友人北条麻妃| 国产精品视频一区二区三区四区五区 | 国产精品久久a| 成人在线观看毛片| 激情网站五月天| av影院在线播放| 污污网站免费看| 国产极品尤物在线| 91九色国产ts另类人妖| 欧美韩国日本在线| 国产精品无码电影在线观看| 性生交免费视频| 精品一区二区三区无码视频| 久久久精品麻豆| 日日橹狠狠爱欧美超碰| 特级西西444| 国产91av视频在线观看| 熟妇人妻无乱码中文字幕真矢织江 | 欧美视频在线观看视频| 日本中文字幕影院| 激情综合网俺也去| 男人操女人免费软件| www.在线观看av| 黄色小视频大全| 看看黄色一级片| 精品少妇无遮挡毛片| 日韩av资源在线| 夫妻免费无码v看片| 亚洲理论电影在线观看| 一级黄色免费在线观看| 中文字幕22页| 五月天开心婷婷| 潘金莲激情呻吟欲求不满视频| 欧美大片久久久| 九九热99视频| 午夜激情视频网| 伊人影院综合在线| 深爱五月综合网| 亚洲色图欧美自拍| www国产免费| 妞干网在线视频观看| 精品少妇人妻av免费久久洗澡| 人妻无码久久一区二区三区免费| www国产精品内射老熟女| 人人妻人人澡人人爽欧美一区双| www精品久久| 鲁一鲁一鲁一鲁一澡| 中国丰满人妻videoshd | 欧美日韩怡红院| 黄色av免费在线播放| 中文字幕第17页| 视频免费1区二区三区 | 91精品一区二区三区四区| 四虎4hu永久免费入口| 成人黄色大片网站| 欧美黑人经典片免费观看| 色综合av综合无码综合网站| 91日韩视频在线观看| 黄色一级片免费播放| youjizz.com在线观看| 成年人免费大片| 男女啪啪的视频| 国产精品第12页| 日日夜夜精品视频免费观看| 黄色一级视频片| 色噜噜狠狠永久免费| 亚洲一区二区三区av无码| 午夜在线观看av| www婷婷av久久久影片| 另类小说色综合| 可以看毛片的网址| 亚洲欧美aaa| 日本福利视频在线| 伊人五月天婷婷| 能看的毛片网站| 国产乱子伦精品无码专区| 丝袜制服一区二区三区| 99久久免费观看| 自拍一级黄色片| 激情综合网俺也去| 精品一区二区三区无码视频| 国产aⅴ爽av久久久久| 国产精品涩涩涩视频网站| 黄色三级中文字幕| 最近中文字幕免费mv| 91香蕉视频导航| 欧美视频第一区| 成人免费网站入口| 亚洲综合日韩欧美| 已婚少妇美妙人妻系列| 成人性免费视频| 国产尤物av一区二区三区| 成人性生交视频免费观看| jizz欧美激情18| 日本在线观看a| 99色精品视频| 国产欧美日韩网站| 久草免费福利在线| 欧美三级午夜理伦三级老人| 911av视频| 成人性生交视频免费观看| 黄色一级片免费的| 欧美激情国内自拍| av中文字幕网址| 亚洲天堂一区二区在线观看| 中文字幕线观看| 香蕉视频xxxx| 久久久无码中文字幕久...| 性鲍视频在线观看| www.18av.com| 欧美图片激情小说| 男人操女人免费软件| 激情六月丁香婷婷| 中文久久久久久| 日日干日日操日日射| 999热精品视频| 白白操在线视频| 国产精品一区二区免费在线观看| 中文字幕乱码人妻综合二区三区| 蜜臀一区二区三区精品免费视频| 超碰人人爱人人| 极品粉嫩国产18尤物| 动漫av免费观看| www.久久av.com| 欧美另类videos| 久久亚洲中文字幕无码| 97xxxxx| 狠狠操狠狠干视频| 国产爆乳无码一区二区麻豆| 国产一二三区在线播放| 日本精品久久久久中文字幕| 亚洲黄色av网址| 日韩成人手机在线| 99热成人精品热久久66| 一区二区三区四区久久| 丰满少妇久久久| 亚洲精品自拍网|