在线看毛片视频-国产免费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>
  • 国产亚洲综合视频| 51自拍视频在线观看| 精品中文字幕av| 男操女免费网站| 97人人模人人爽人人澡| 国产乱人伦精品一区二区三区| 可以免费看的黄色网址| 亚洲色图38p| 国产成人无码精品久久久性色| 日韩福利视频在线| 黄色免费福利视频| 特级黄色片视频| 日日噜噜噜噜久久久精品毛片| 三级黄色片免费观看| 国产wwwxx| 欧美成人精品欧美一级乱| 日本一二三区视频在线| 福利片一区二区三区| 日本成年人网址| 日韩亚洲在线视频| 日韩视频免费在线播放| 午夜精品久久久久久久无码| 免费网站永久免费观看| 国产a级黄色大片| 特级黄色录像片| 日本一道在线观看| 黄色a级片免费看| 日韩欧美视频网站| 亚洲xxxx2d动漫1| 欧美成人手机在线视频| 欧洲精品视频在线| 九色在线视频观看| 亚洲免费看av| 亚洲天堂一区二区在线观看| 久久久久久久香蕉| 无码精品a∨在线观看中文| 国产福利视频在线播放| 午夜天堂在线视频| 5月婷婷6月丁香| 99re6在线观看| 欧美成人一区二区在线观看| 午夜免费福利在线| 国产在线精品91| 欧美性受xxxxxx黑人xyx性爽| 日韩小视频网站| 日韩高清在线一区二区| 粉嫩虎白女毛片人体| 中文字幕乱码免费| 国产亚洲视频一区| 午夜肉伦伦影院| 免费看黄在线看| 亚洲天堂av免费在线观看| 久久久久免费精品| 人妻av中文系列| 日本少妇高潮喷水视频| 日韩精品一区二区三区色欲av| 久操网在线观看| 久久久久免费精品| 久久久久久久高清| 国产精品久久久影院| 久久国产精品网| 精品www久久久久奶水| mm131国产精品| 成年人免费观看的视频| 成人网站免费观看入口| 久久人妻精品白浆国产 | 亚洲一区二区三区av无码| 蜜桃视频一区二区在线观看| www.18av.com| 国产wwwxx| 亚洲人精品午夜射精日韩| 北条麻妃在线视频观看| 中文字幕亚洲欧洲| 免费无遮挡无码永久视频| 国产精品区在线| 日本欧美黄色片| av 日韩 人妻 黑人 综合 无码| 日本www在线视频| 一级做a爱视频| 天天爱天天操天天干| 特级西西人体www高清大胆| 国产精品天天av精麻传媒| www.av91| 日本中文字幕一级片| 伊人免费视频二| 久热精品在线播放| 久久精品网站视频| 少妇一级淫免费放| 国产精品97在线| 国产福利视频在线播放| 三上悠亚久久精品| 日韩中文字幕三区| 欧美精品色婷婷五月综合| 久久久久人妻精品一区三寸| 国产又大又硬又粗| 别急慢慢来1978如如2| 看看黄色一级片| 日韩视频在线免费播放| 日韩亚洲欧美一区二区| 精品少妇一区二区三区在线| 欧美不卡在线播放| 午夜免费福利在线| 日本a级片在线观看| 国产亚洲综合视频| 久久久久久久久久一区二区| 久操手机在线视频| www.男人天堂网| 天天干天天玩天天操| 天天爱天天做天天操| 国产成人在线小视频| 日韩av片在线看| 午夜视频在线网站| 成年人免费在线播放| 永久免费黄色片| 无码aⅴ精品一区二区三区浪潮| 日本免费观看网站| 超碰人人爱人人| 日本高清免费在线视频| 激情综合在线观看| 国产又粗又硬又长| www.污网站| 久久九九国产视频| 久无码久无码av无码| 狠狠精品干练久久久无码中文字幕| 免费看的黄色大片| 农民人伦一区二区三区| 91亚洲精品国产| 欧美乱做爰xxxⅹ久久久| 欧美一级特黄a| 91pony九色| 99九九99九九九99九他书对| 九色91popny| 亚洲久久中文字幕| 久久久精品视频国产| 日韩av片免费观看| 国产91porn| a在线视频观看| 亚洲 中文字幕 日韩 无码| 婷婷激情四射五月天| 91高清国产视频| 久久久久99精品成人片| www.射射射| 欧美成人黄色网址| 久久久久久久久久久久久久久国产 | aa在线免费观看| 一级黄色在线播放| www..com日韩| 国产一区 在线播放| 九九热在线免费| 你真棒插曲来救救我在线观看| 91看片在线免费观看| 免费毛片网站在线观看| 国产乱女淫av麻豆国产| 日韩一级在线免费观看| 国产午夜大地久久| 男同互操gay射视频在线看| 欧美伦理视频在线观看| 浮妇高潮喷白浆视频| 在线视频一二三区| 神马午夜伦理影院| 一道本在线观看视频| 桥本有菜av在线| 国产盗摄视频在线观看| 99视频精品全部免费看| 佐佐木明希av| 国产资源第一页| 欧美高清中文字幕| 黄色一级视频在线播放| 六月丁香婷婷在线| 国产九九在线观看| 400部精品国偷自产在线观看| 欧洲美女亚洲激情| 成人免费观看cn| 福利在线一区二区三区| 欧美大片久久久| 国产免费黄色一级片| 老头吃奶性行交视频| 中文字幕 欧美日韩| 黑人糟蹋人妻hd中文字幕 | 国产精品久久久久久久久电影网| 自拍一级黄色片| 国产精品拍拍拍| 欧美 丝袜 自拍 制服 另类| www.久久av.com| 热99这里只有精品| 中国一级黄色录像| 日韩在线一区视频| 男女av免费观看| 免费看欧美一级片| 麻豆md0077饥渴少妇| 亚欧激情乱码久久久久久久久| 欧美日韩一道本| 国产精品一线二线三线| 国产成人生活片| 国产资源中文字幕| 糖心vlog在线免费观看| 自拍偷拍21p| 日本特级黄色大片| 男同互操gay射视频在线看| 五月激情五月婷婷|