win32打印图片


最近要做打印,所以需要打印的数据 都会绘制一在个缓冲图上 ,在网上找了此资料整理了一下. 随便求大神,
系统有没有这种API.调这个API直接能出现打印预览,我把这个缓冲图传给他,然后就由系统进行打印了?


DWORD dwNeeded, dwReturned;
	EnumPrinters(PRINTER_ENUM_LOCAL, NULL, 5, NULL, 0, &dwNeeded, &dwReturned);
	PRINTER_INFO_5* prninfo = (PRINTER_INFO_5*)GlobalAlloc(GPTR, dwNeeded);

	if (EnumPrinters(PRINTER_ENUM_LOCAL, NULL, 5, (LPBYTE)prninfo, dwNeeded, &dwNeeded, &dwReturned)) 
	{
        创建打印DC
		m_PrinterDC = CreateDC(NULL,prninfo[0].pPrinterName, NULL, NULL) ;  
	}

bool IPrinter::PrinteImage(Gdiplus::Image* pImg)
{


	DOCINFO docInfo;

	docInfo.cbSize = sizeof(docInfo) ;

	docInfo.lpszDocName = (LPCWSTR)"NJ3a";

	docInfo.lpszOutput = NULL;

	docInfo.lpszDatatype = NULL;

	docInfo.fwType = 0;

	int result = StartDoc(m_PrinterDC, &docInfo) ;

	if (result <= 0)

	{

		MessageBox(0, L"StartDoc() failed" ,

			L"Basic Print App" , MB_OK | MB_ICONERROR) ;



	}  

	// 第3步:调用StartPage()

	result = StartPage(m_PrinterDC) ;

	if (result <= 0)

	{

		MessageBox(0, L"StartPage() failed" ,

			L"Basic Print App" , MB_OK  |  MB_ICONERROR) ;

		return false;

	}  

	// 第4步:打印数据

	//Rectangle(m_PrinterDC, 20, 20, 355, 417) ;

	//int w=pImg->GetWidth();
	//int h=pImg->GetHeight()-40;
	//HDC hdcsrc=CreateCompatibleDC(m_PrinterDC);
	//SelectObject(hdcsrc,pImg);
	//BitBlt(m_PrinterDC,0,0,w,h,hdcsrc,0,0,SRCCOPY);




	Gdiplus::Graphics g(m_PrinterDC);

	Gdiplus:: ImageAttributes imageAttr;


	imageAttr.SetWrapMode(Gdiplus::WrapModeTile);

	Gdiplus::RectF destDrawRect(0,0,pImg->GetWidth(),pImg->GetHeight()-40);
	Gdiplus::RectF srcRect(0,0,pImg->GetWidth(),pImg->GetHeight()-40);
	g.DrawImage(pImg,destDrawRect,srcRect.X,srcRect.Y,srcRect.Width,srcRect.Height,Gdiplus::UnitPixel,&imageAttr);

	// 第5步:调用EndPage()

	result = EndPage(m_PrinterDC) ;

	if (result <= 0)
	{

		MessageBox(0, L"EndPage() failed" ,

			L"Basic Print App" , MB_OK  |  MB_ICONERROR) ;
	}  

	// 第6步:调用EndDOC()

	EndDoc(m_PrinterDC) ;

	MessageBox(0, L"Document printed" , L"Basic Print App" ,

		MB_OK  |  MB_ICONINFORMATION) ;


	return true;
}
  

  

 
posted @ 2013-04-19 14:02  Hideaway  阅读(1344)  评论(0编辑  收藏  举报