void CPrintfFileTextDlg::OnBnClickedButton1()
{
CPrintDialog printDlg(FALSE);
//獲取默認列印屬性,不顯示列印視窗
//printDlg.GetDefaults();
//或從用戶處獲取
if (printDlg.DoModal() == IDCANCEL)
return;
CDC dc;
if (!dc.Attach(printDlg.GetPrinterDC()))
{
MessageBox(_T("沒有找到列印機!"),_T("提示"));
return;
}
dc.m_bPrinting = TRUE;
DOCINFO di;
//初始化列印檔案詳細資訊
::ZeroMemory (&di, sizeof (DOCINFO));
di.cbSize = sizeof (DOCINFO);
di.lpszDocName = _T("標簽列印");
BOOL bPrintingOK = dc.StartDoc(&di); // 開始新的列印作業
//獲取列印范圍 并存盤在 CPrintInfo 物件
CPrintInfo Info;
Info.SetMaxPage(1); // 只有一頁//獲取所有像素數
int maxw = dc.GetDeviceCaps(HORZRES);
int maxh = dc.GetDeviceCaps(VERTRES);
//設定紙張列印大小
Info.m_rectDraw.SetRect(0, 0, maxw, maxh);
//
for (UINT page = Info.GetMinPage(); page <= Info.GetMaxPage() &&
bPrintingOK; page++)
{
dc.StartPage(); //開始新頁面
Info.m_nCurPage = page;
CImage Img;
Img.Load(_T("d://22.png"));
HBITMAP hBitm;
hBitm=Img.Detach();//分離位圖句柄
CBitmap bitmap;
bitmap.Attach(hBitm);//附加位圖句柄
BITMAP bm;
bitmap.GetBitmap(&bm);
int w = bm.bmWidth;
int h = bm.bmHeight;
//創建記憶體設備背景關系
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CBitmap *pBmp = memDC.SelectObject(&bitmap);
memDC.SetMapMode(dc.GetMapMode());
dc.SetStretchBltMode(HALFTONE);
//現在拉伸到頁面的最大寬度
dc.StretchBlt(0, 0, maxw, maxh, &memDC, 0, 0, w, h, SRCCOPY);
// 清理
memDC.SelectObject(pBmp);
bPrintingOK = (dc.EndPage() > 0); // 結束頁
}
if(bPrintingOK)
dc.EndDoc(); // 結束列印作業
else
dc.AbortDoc(); //中止卡
在開始列印作業那里,VS都卡崩了,急,怎么解決
uj5u.com熱心網友回復:
CDC::EndPage Return Value Greater than or equal to 0 if successful;bPrintingOK = (dc.EndPage() >= 0); // 結束頁
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/51475.html
標籤:基礎類
