数据库打印
我的数据库完成了 但是我想打印数据库中的表,并把查询结果打在表上。基本已实现功能,但是实际打印出来的与打印预览差别较大,除了变量能打印清晰外,其他都很模糊。我的部分代码如下:
extern CString qip,qmask,qgateway,qcn;//公有变量已在查询中被付值。
。。。。。
void CWisView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
// TODO: Add your specialized code here and/or call the base class
}
void CWisView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
// TODO: Add your specialized code here and/or call the base class
pDC->SetMapMode (MM_TWIPS) ;
CFont font;
font.CreateFont(-280,0,0,0,400,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_MODERN,"Arial");
CFont* pOldFont=(CFont*)(pDC->SelectObject(&font));
PrintPageHeader(pDC,pInfo);//打印页眉
PrintPage(pDC,pInfo);//打印页
PrintPageFooter(pDC);//打印页角
}
void CWisView::PrintPageHeader(CDC *pDC, CPrintInfo *pInfo)
{
CString str;
CPoint point(2500,-600);
pDC->TextOut(point.x,point.y,"西安智杰数码科技有限公司 Xi'an Wisdom digital Co.,Ltd");
TEXTMETRIC textMetric;
int y=-1000;
pDC->MoveTo(800,y);
pDC->LineTo(11000,y);
point+=CSize(1090,-820);
str.Format("自助清单打印机故障出工单");
pDC->TextOut(point.x,point.y,str);
}
void CWisView::PrintPageFooter(CDC *pDC)
{
CString str;
CPoint point(1300,-16000);
str.Format("-------Tel:029-8217053----029-8255952-----Fax:029-8215665-to-8001---------");
pDC->TextOut(point.x,point.y,str);
}
void CWisView::PrintPage(CDC *pDC, CPrintInfo *pInfo)
{
CString str;
TEXTMETRIC textMetric;
//大框架
pDC->MoveTo(700,-1800);
pDC->LineTo(700,-15500);
pDC->TextOut(800,-3500,qip);
。。。。。//省略中间部分,都是画出来的,代码较长
}
我考虑所见即所得,改动如下:
void CWisView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
// TODO: Add your specialized code here and/or call the base class
CView::OnPrepareDC(pDC, pInfo);
pDC->SetMapMode(MM_ANISOTROPIC); //转换坐标映射方式
CSize size = CSize(800, 560);
pDC->SetWindowExt(size); //确定窗口大小
//得到实际设备每逻辑英寸的象素数量
int xLogPixPerInch = pDC- >GetDeviceCaps(LOGPIXELSX);
int yLogPixPerInch = pDC- >GetDeviceCaps(LOGPIXELSY);
//得到设备坐标和逻辑坐标的比例
long xExt = (long)size.cx * xLogPixPerInch/96 ;
long yExt = (long)size.cy * yLogPixPerInch/96 ;
pDC->SetViewportExt((int)xExt, (int)yExt);
//确定视口大小
}
但改动后打印预览不停的闪动。不知道何缘故??
望赐教!