国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

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

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

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

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

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

  Document/View框架之外的打印

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

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

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

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

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

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

  BOOL CMyDialog::DoPreparePrintDC()

  // 準備打印場景

  {

   #define  FONTSIZE 14

   // 獲取打印機的設備屬性

   CPrintDialog dlgPrint( FALSE );

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

   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;

   // 設置打印標志

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

   // 將打印字體選進設備場景

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

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

   ...

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

   m—DC.EndPage();

   m—DC.EndDoc();

   m—DC.SelectObject(pOldFont);

   // 清除打印場景

   DoClearPrintDC();}

  表格問題

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

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

  ...

  #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 | FF—DONTCARE, HFONTNAME))

   return FALSE;

  ...

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

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

本類教程下載

系統(tǒng)下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        粉嫩在线一区二区三区视频| 夜夜精品视频一区二区| 精品国产一区a| 麻豆成人av在线| 在线成人av网站| 日本vs亚洲vs韩国一区三区| 日韩视频一区二区在线观看| 美国三级日本三级久久99| 欧美本精品男人aⅴ天堂| 狠狠久久亚洲欧美| 久久久午夜精品| 成人免费视频视频| 亚洲精品欧美专区| 91精品国产欧美一区二区成人| 日韩精品高清不卡| 久久综合国产精品| 成人av手机在线观看| 一区二区三区精品视频在线| 亚洲成人av在线电影| 日韩欧美美女一区二区三区| 在线视频一区二区三区| 亚洲综合免费观看高清完整版在线| 91免费观看国产| 视频在线观看91| 久久―日本道色综合久久| 成人手机电影网| 舔着乳尖日韩一区| 国产精品视频观看| 日韩一区二区视频在线观看| 国产成人8x视频一区二区| 亚洲一区电影777| 久久久高清一区二区三区| 欧美亚洲国产一区二区三区va | 九色综合狠狠综合久久| 久久综合九色综合久久久精品综合| 成人性生交大片免费看在线播放| 亚洲一区二区三区四区不卡| 国产婷婷一区二区| 欧美一区二区三区播放老司机| 成人精品小蝌蚪| 精品在线一区二区三区| 亚洲一区二区四区蜜桃| 欧美高清在线精品一区| 欧美一级电影网站| 欧美在线观看禁18| 99九九99九九九视频精品| 国模无码大尺度一区二区三区| 亚洲成人777| 一区二区三区不卡在线观看| 亚洲国产激情av| 久久久久久久久久看片| 欧美va亚洲va香蕉在线| 日韩区在线观看| 日韩一区二区三区观看| 欧美精品三级日韩久久| 91黄色激情网站| 91麻豆国产在线观看| 风流少妇一区二区| 国产成人精品免费一区二区| 日韩av在线发布| 日韩电影在线免费看| 亚洲综合激情另类小说区| 亚洲日本在线看| 亚洲精品自拍动漫在线| 中文字幕日韩一区| 中文字幕一区二区三区四区| 亚洲国产成人一区二区三区| 国产午夜亚洲精品不卡| 久久女同精品一区二区| 2020日本不卡一区二区视频| 亚洲精品一区二区三区99| 欧美精品一区二区三区在线| 亚洲精品在线免费播放| 久久久久久久久久久久久女国产乱 | 99国产精品国产精品久久| www..com久久爱| 一本久久综合亚洲鲁鲁五月天| 91色视频在线| 欧美自拍丝袜亚洲| 正在播放亚洲一区| 91久久精品网| 三级不卡在线观看| 国产一区二区三区四区五区入口| 精彩视频一区二区| 一区二区三区欧美日韩| 亚洲午夜精品网| 蜜臀久久99精品久久久久宅男| 久久电影国产免费久久电影| 国产美女在线观看一区| 99热精品一区二区| 欧美精品欧美精品系列| 国产网站一区二区| 亚洲乱码国产乱码精品精的特点| 午夜精品久久久| 盗摄精品av一区二区三区| 色老头久久综合| 日韩免费观看高清完整版在线观看| 国产欧美日韩精品一区| 天天综合色天天综合| 国产xxx精品视频大全| 91福利社在线观看| 久久日韩粉嫩一区二区三区| 亚洲色图20p| 国产精品99久久久久| 欧美男女性生活在线直播观看| 欧美videos大乳护士334| 亚洲欧美一区二区三区久本道91| 麻豆精品一区二区综合av| 91蝌蚪porny九色| 日韩欧美国产三级电影视频| 亚洲色欲色欲www| 国产精品18久久久久久久久久久久 | 精品国产a毛片| 亚洲精品一二三四区| 精彩视频一区二区三区 | 国产九九视频一区二区三区| 在线这里只有精品| 国产精品嫩草影院av蜜臀| 另类小说一区二区三区| 色先锋资源久久综合| 中文字幕av一区二区三区| 狠狠色丁香婷婷综合久久片| 91精品黄色片免费大全| 亚洲成人免费视| 在线观看视频一区| 亚洲图片你懂的| 日韩电影在线免费观看| 欧美日韩精品三区| 亚洲国产综合色| 欧美综合一区二区三区| 亚洲女人****多毛耸耸8| thepron国产精品| 国产精品久久久久影院亚瑟| 国产一区中文字幕| 欧美成人a∨高清免费观看| 日韩精品午夜视频| 日韩欧美自拍偷拍| 久久国产精品99精品国产| 欧美一区二区三区视频免费| 日韩av在线播放中文字幕| 欧美精品第1页| 日本一区中文字幕| 欧美一二三四在线| 久久99久久精品欧美| 久久众筹精品私拍模特| 国产大陆亚洲精品国产| 亚洲国产成人在线| 99精品国产热久久91蜜凸| 亚洲黄一区二区三区| 精品视频1区2区| 青青草国产精品97视觉盛宴| 精品动漫一区二区三区在线观看| 国产一区二区三区免费在线观看 | 在线不卡的av| 精品夜夜嗨av一区二区三区| 久久久久久免费网| av一区二区三区在线| 亚洲日本va午夜在线电影| 欧美专区日韩专区| 久久99九九99精品| 国产精品天干天干在观线| 不卡的av中国片| 亚洲第一在线综合网站| 精品国产三级a在线观看| www.欧美亚洲| 日韩电影在线免费观看| 欧美韩日一区二区三区| 色屁屁一区二区| 精品综合久久久久久8888| 国产精品美女一区二区在线观看| 日本精品免费观看高清观看| 青草av.久久免费一区| 中文无字幕一区二区三区| 欧美性猛交xxxxxx富婆| 国产在线视视频有精品| 亚洲综合在线五月| 国产无人区一区二区三区| 这里是久久伊人| 91国在线观看| 粉嫩aⅴ一区二区三区四区| 日韩高清中文字幕一区| 日韩美女啊v在线免费观看| 2017欧美狠狠色| 91精品国产色综合久久不卡电影| 菠萝蜜视频在线观看一区| 精品在线一区二区| 日本成人中文字幕| 午夜激情久久久| 亚洲激情图片一区| 国产精品成人一区二区艾草| 精品少妇一区二区三区日产乱码| 在线看日本不卡| 99国产精品久| a在线播放不卡| 岛国av在线一区| 国产老肥熟一区二区三区| 青娱乐精品视频| 亚洲成人在线网站| 亚洲一区二区三区四区五区中文| 国产精品久久看|