不用DOC/VIEW類結構進行列印 (轉)
直接列印,不需要文件/視
聞怡洋 譯 to:wyy_cq@188">wyy_cq@188.net
This article was contributed by .
如果你需要在沒有使用文件/檢視的應用中使用列印功能(比如說在對話方塊中)你將無法利用MFC提供的功能,而且對於某些新手來講有些困難。 下面的的程式碼可以供你在對話方塊中如果在DOC/View中一樣使用列印功能。你必須定義OnBeginPrinting, OnEndPrinting 和 OnPrint三個,其原型和功能與在VIEW中一樣。
void CMyDialog::Print()
{
CDC dc;
CPrintDialog printDlg(FALSE);
//利用CPrintDialog 生成印表機裝置環境
if (printDlg.odal() == IDCANCEL) // Get printer settings from user 讓選擇列印紙張等
return;
dc.Attach(printDlg.GetPrinterDC()); // Attach a printer DC 讓HANDLE連線到dc上
dc.m_bPrinting = TRUE;
CString strTitle; // Get the application title ?
strTitle.LoadString(AFX_IDS_APP_TITLE);
DOCINFO di; // Initialise print document details DOCINFO中有相關的列印資訊
::ZeroMemory (&di, sizeof (DOCINFO));
di.cbSize = sizeof (DOCINFO);
di.lpszDocName = strTitle;//設定標題
BOOL bPrintingOK = dc.StartDoc(&di); // Begin a new print job 開始列印
// Get the printing extents and store in the m_rectDraw field of a
// CPrintInfo
CPrintInfo Info;//
Info.m_rectDraw.SetRect(0,0,
dc.GetDeviceCaps(HORZRES),
dc.GetDeviceCaps(VERTRES));//設定範圍
OnBeginPrinting(&dc, &Info); // 你自己定義的初始化功能
for (UINT page = Info.GetMinPage(); page
{Info.m_nCurPage = page;
OnPrint(&dc, &Info); // Call your "Print page" function
bPrintingOK = (dc.EndPage() > 0); // end page
}
OnEndPrinting(&dc, &Info); // 結束列印
if (bPrintingOK)
dc.EndDoc(); // end a print job
else
dc.AbortDoc(); // abort job.
dc.Detach(); // detach the printer DC
}
[譯者:其實在環境中是裝置無關的。只要有了DC,你可以使用各種GDI函式,而不需要理會是在螢幕或是在印表機上繪圖。在Windows3.X一般使用CreateDC建立列印環境,在下好象並不是很相容,使用CPrintDialog產生列印DC是個不錯的方法。你只要看看MFC的就能搞清楚PrintDialog是怎麼產生DC的了。 藍色的程式碼是講訴如何初始化列印的引數,而其他的引數你可以在OnBeginPrint中進行設定]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988404/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在列印視窗,列印檢視View的子檢視結構圖View
- 用ASP進行網路列印功能 (轉)
- doc,view,frame互相呼叫View
- 【DOC】VIEW: "V$LOCK" Reference NoteView
- gdb列印結構體memberoffset結構體
- Java採用內部構造器Builder模式進行對類進行構建JavaUI模式
- 不用匯入SDK就可實現導航--URI方式跳轉到各類地圖進行導航地圖
- 100 行 C 程式碼終端列印樹形結構
- 使用XPathExpression類對XML進行排序 (轉)ExpressXML排序
- DataGrid控制元件通用列印類. (轉)控制元件
- IOS自動進行View標記iOSView
- 使用IEWebBrowser元件進行列印的總結Web元件
- C#資料結構篇(一連結串列類) (轉)C#資料結構
- 類和結構
- Linux循序漸進(17):列印操作(轉)Linux
- 資料結構–進位制(任意)轉換資料結構
- 類檔案結構_class類檔案的的結構
- C語言進位制轉換與列印C語言
- 二進位制翻轉、結構體指標結構體指標
- 類與結構體結構體
- 【Java】類的結構Java
- 使用Typescript進行結構性開發(建立Table)TypeScript
- Graphviz 對網狀結構進行視覺化視覺化
- 實現類似IE的列印網頁功能 (轉)網頁
- 呼叫建構函式進行型別轉換函式型別
- android view 的建立解析,攔截view的建立並進行操作(一)AndroidView
- 安卓自定義 View 進階:Path 完結篇(偽)安卓View
- 二進位制列印與逆序_C語言(轉)C語言
- 依據類的成員來對類進行排序的泛型方法 (轉)排序泛型
- Swift 類與結構體Swift結構體
- golang類和結構體Golang結構體
- OC中類的結構
- Swift,結構體與類Swift結構體
- Class類檔案結構
- 集合框架類結構圖框架
- Windows 10升級如何立即進行,不用等微軟分批推送?Windows微軟
- java不用api實現單連結串列反轉(二)JavaAPI
- 不用遞迴實現樹形結構的一種方法遞迴