第13章 使用印表機

2021-07-06 04:56:43 字數 1476 閱讀 4371

文件的真正列印不是應用程式的責任,是後台列印處理程式的責任

一、印表機專用函式

1、startdoc,

2、enddoc

3、,startpage;

4、endpage

它們負責把印表機的輸出組織成不同列印頁。gdi函式把文字和圖形輸出現在在這些頁面上,如同顯示在螢幕一樣。

三、獲取印表機裝置環境控制代碼:createdc,printdlg,這使得印表機裝置驅動程式庫模組被載入到記憶體,並初始化。

四、開始列印:startdc(gdi)->control函式(印表機裝置驅動程式),通知裝置驅動程式做好準備,n次(startpage,gdi,endpage),enddoc。

列印其中一頁過程:gdi負責把所有的gdi函式儲存在硬碟的圖元檔案裡(以~emf開頭,字尾是.tmp)。印表機驅動程式必須把儲存在圖元檔案裡面的各個繪圖命令轉化成適用於印表機的輸出。印表機把頁面分帶,並把每一條帶的印表機輸出傳給gdi模組,而gdi模組則把這些輸入儲存到另外乙個臨時資料夾,檔案以~spl開口,以.tmp作為字尾。

列印一頁完成後:gdi模組採用程序間呼叫(inter-process call)告訴後台列印處理程式新的列印作業已經就緒。

五、windows後台列印處理程式組成

1、列印請求程式

2、本地印表機提供程式

3、網路列印提供程式

4、列印處理器

5、埠監控程式

6、語言監控程式

列印後台程式把應用程式從一些涉及列印的工作中解脫出來

六、印表機工作模式變體:禁用列印後台程式,那麼,不會儲存臨時檔案~emf,~spl到本地,而是gdi直接將列印輸出直接輸出到印表機。

七:列舉印表機

enumprinters(printer_enum_local, null, 4,null,0,&dwneeded,&dwreturned);

prntinfo4 = (printer_info_4*)malloc(dwneeded);

enumprinters(printer_enum_local, null, 4,(pbyte)prntinfo4,dwneeded,&dwneeded,&dwreturned);

hdc hdc = createdc(null,prntinfo4->pprintername,null,null);

handle hprint;

for (int i= 0; i

1、extdevicemode

2、extdevicemodepropsheet

3、printerproperties ---- 推薦

九、獲取頁面可列印區域的尺寸和解析度:getdevicecaps

十、用異常中斷過程取消列印,但是為了防止異常中斷的訊息迴圈分發訊息,所以在startdoc之前enabledwindow(hwnd,false),然後setabortproc;

注意:1、無論是createdc,還是printdlg獲取到印表機裝置環境控制代碼,都必須使用deletedc進行釋放

檢測印表機並於指定印表機上列印

1.自動檢測印表機 tprinter p printer tstringlist list new tstringlist list assign p printers 重點是這句 if list count 0 delete list else 2.在指定的印表機上列印報表 tprinter pr...

JQuery使用印表機列印div

由於工作中需要呼叫印表機列印資料,之前一直使用window.print 這個來列印但是它是整個頁面全部列印。後來感覺效果不太好,後來我就想能不能只列印乙個div中的內容呢?想到這我抓緊上網搜尋起來,發現還真有,我直接選用了jqprint這個外掛程式。上 看看吧 document ready func...

使用python控制印表機

python安裝win32api模組 pip install pypiwin32 一組擴充套件模組,提供對許多windows api函式的訪問。以前稱為win32all。win32api文件 import win32print import win32ui import win32con defpr...