在mfc使用印表機相對簡單,此處不多說,現看看在控制台下如何使用列印功能。
獲取所有的印表機:
struct print
;vectormprints;
void getprinters()
//獲取印表機,填充到陣列
if (!enumprinters (dwflags, null, 2, (lpbyte) pprinters,
cbprinters, &cbprinters, &creturned))
//提取印表機資訊,包括驅動名、印表機名、埠名
if (creturned > 0) }
done_refreshing:
localfree (localhandle (pprinters));
}
使用印表機:
開啟印表機,並建立印表機dc:
wchar_t szprinter[max_path];
dword cchprinter(arraysize(szprinter));
//getdefaultprinter(szprinter, &cchprinter);
wcscpy(szprinter, gsystemconfig.mdevicename.getbuffer());
openprinter(szprinter, &hdl, null);
dword size = documentproperties(null, hdl, szprinter, null, null, 0);
devmode = (devmode*)malloc(size);
documentproperties(null, hdl, szprinter, devmode, null, dm_out_buffer);
hdc printerdc = createdc(l"winspool", szprinter, null, devmode);
獲取印表機的尺寸:
width = getdevicecaps(printerdc, horzres);
height = getdevicecaps(printerdc, vertres);
這裡獲取的尺寸是以畫素為單位的,所有,如果列印引數是按照實際尺寸的,那麼需要根據列印解析度將實際尺寸換算成畫素,因為程式中是以畫素為單位進行文字、影象等繪製。
獲取印表機解析度:
mdpi = getdevicecaps(printerdc, logpixelsx);
列印設定:
devmode->dmorientation = dmorient_portrait; //列印方向設定成縱向列印
devmode->dm*****size = dm*****_a4;
列印引數設定之後需要呼叫:
resetdc(printerdc, devmode);
生效。
開始文件,開始一頁
startdoc(printerdc, &info);
startpage(printerdc);
結束一頁:
endpage(printdc);
在開始一頁和結束一頁之間根據排版,繪製內容。這裡與視窗中繪製內容無異,不多說。
列印結束之後:
enddoc(printerdc);
deletedc(printerdc);
closeprinter(hdl);
free(devmode);
關閉文件、印表機。
這裡使用印表機只獲取印表機的名稱就可以了。
WIN32中使用GDI 入門
方法和我前面寫過的vs2013使用gdi 一樣 2 配置 專案 屬性 配置屬性 聯結器 輸入 附加依賴庫中新增 gdiplus.lib 3 新增標頭檔案,放在主函式標頭檔案中,這個位置隨意 include include gdiplus.h using namespace gdiplus pragm...
win10虛擬印表機安裝 虛擬印表機找不到怎麼辦
開啟控制系統 控制面板 依次進入 程式和功能 啟用或關閉windows功能 介面。如圖所示 從開啟的 啟用或關閉windows功能 介面中,找到 microsoft print to pdf 虛擬印表機裝置並進行勾選,點選 確定 按鈕。此時windows將自動搜尋相關元件並完成windows虛擬印表...
JQuery使用印表機列印div
由於工作中需要呼叫印表機列印資料,之前一直使用window.print 這個來列印但是它是整個頁面全部列印。後來感覺效果不太好,後來我就想能不能只列印乙個div中的內容呢?想到這我抓緊上網搜尋起來,發現還真有,我直接選用了jqprint這個外掛程式。上 看看吧 document ready func...