就是一个jpg图片文件,要打印,其他类型也行
解决方案 »
- CString有构造n个任意字符的方法吗?比如:n个0
- UrlMkSetSessionOption原理
- CComDispatchDriver 接口如何转换成控件的IHTMLDocument2接口?
- vc表格控件,在本机可以显示数据,但安装到其它的计算机上后无法显示数据?
- CArray使用中的问题?请教。。。
- HookOneAPI 该怎么写??? 看了这贴子我不明白啊,帮帮我,谢谢
- 哪些软件的安装包是MSI格式的?
- 高分求救:串口针脚的问题!!
- _findfirst函数的使用,在线等待呀!
- 有谁知道输入法的文件格式.
- vc中线程对mysql的链接问题
- 用vc++6.0从该Excel中读取表格中的内容(文字和数据),应如何实现?
void CPrintDlg::OnPrint()
{
CDC* pDC=m_image.GetDC() ;
CRect rect ;
m_image.GetClientRect(m_rect) ;int formx,formy ;
formx=pDC->GetDevieceCaps(LOGPIXELSX);
formy=pDC->GetDeveiceCaps(LPGPIXELSY) ;
CPrintDialog dialog(FALSE) ;
if(dialog.DoModal()==IDOK)
{
CDC dc;
dc.Attach(dialog.GetPrintDC()) ;
//获取打印机与屏幕的分辨率比率
int printerx=dc.GetDeviceCaps(LOGPIXELSX) ;
int printery=dc.GetDevieceCaps(LOGPIXLSY) ; double ratex,ratey ;
ratex=(double)printerx/formx ;
ratey=(double)printery/formy ;
//打印图象 dc.StartDoc("print") ;
dc.StetchBlt(0,0,(int)(m_rect.Width()*ratex),(int)(m_rect.Height()*ratey,pDC,
0,0,m_rect.Width(),m_rect.Height(),SRCCOPY) ;
dc.EndDoc() ;
}
return
}
ShellExecute(this->m_hWnd,"print","c:\\barcode128.jpg",NULL,NULL,SW_HIDE);
或者
ShellExecute(NULL,"print","c:\\barcode128.jpg",NULL,NULL,SW_HIDE);
ShellExecute(this->m_hWnd,"print","c:\\abc.txt","","", SW_HIDE);
{
CRoyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
// 显示等待光标
BeginWaitCursor();
// 获取DIB
HDIB hDIB = pDoc->GetHDIB();
// 判断DIB是否为空
if (hDIB != NULL)
{
LPBYTE lpDIB = (LPBYTE) ::GlobalLock((HGLOBAL) hDIB);
// 获取DIB宽度
int cxDIB = (int) pDoc->m_clsDIB.DIBWidth(lpDIB);
// 获取DIB高度
int cyDIB = (int) pDoc->m_clsDIB.DIBHeight(lpDIB); ::GlobalUnlock((HGLOBAL) hDIB);
CRect rcDIB;
rcDIB.top = rcDIB.left = 0;
rcDIB.right = cxDIB;
rcDIB.bottom = cyDIB;
CRect rcDest;
// 判断是否是打印
if (pDC->IsPrinting())
{
// 是打印,计算输出图像的位置和大小,以便符合页面
// 获取打印页面的水平宽度(象素)
int cxPage = pDC->GetDeviceCaps(HORZRES);
// 获取打印页面的垂直高度(象素)
int cyPage = pDC->GetDeviceCaps(VERTRES);
// 获取打印机每英寸象素数
int cxInch = pDC->GetDeviceCaps(LOGPIXELSX);
int cyInch = pDC->GetDeviceCaps(LOGPIXELSY);
// 计算打印图像大小(缩放,根据页面宽度调整图像大小)
rcDest.top = rcDest.left = 0;
rcDest.bottom = (int)(((double)cyDIB * cxPage * cyInch) / ((double)cxDIB * cxInch));
rcDest.right = cxPage;
// 计算打印图像位置(垂直居中)
int temp = cyPage - (rcDest.bottom - rcDest.top);
rcDest.bottom += temp/2;
rcDest.top += temp/2;
}
else // 非打印
{
// 不必缩放图像
rcDest = rcDIB;
}
// 输出DIB
pDoc->m_clsDIB.PaintDIB(pDC->m_hDC, &rcDest, pDoc->GetHDIB(),
&rcDIB, pDoc->GetDocPalette());
}
// 恢复正常光标
EndWaitCursor();
}void CRoyView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate(); //CSize sizeTotal;
// TODO: calculate the total size of this view
//sizeTotal.cx = sizeTotal.cy = 100;
//SetScrollSizes(MM_TEXT, sizeTotal);
}/////////////////////////////////////////////////////////////////////////////
// CRoyView printingBOOL CRoyView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation // 设置总页数为一。
pInfo->SetMaxPage(1);
return DoPreparePrinting(pInfo);
}void CRoyView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}void CRoyView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}