无法打印 我在CFormview_sView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)中都是pDC->TextOut 和 pDC->MoveTo pDC->LineTo 的操作我在打印预览中可以看到我要打的文本和坐标图;但是一打印 就错误报告为什么啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 肯定是你设字体的代码不对了,onprint的内容贴出来看看 void CFormview_sView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/){ // TODO: add customized printing code here CString aa; pDC->TextOut(450,20,"伏安特性检测报告"); pDC->TextOut(140,40,"站 名:"); pDC->TextOut(500,40,"测试人员:"); pDC->TextOut(140,60,"设备名称:"); pDC->TextOut(500,60,"测试地点:"); pDC->TextOut(140,80,"设备编号:"); pDC->TextOut(500,80,"测试时间:"); m_name.GetWindowText(aa); pDC->TextOut(230,40,aa); m_nameofequipment.GetWindowText(aa); pDC->TextOut(230,60,aa); m_number.GetWindowText(aa); pDC->TextOut(230,80,aa); m_person.GetWindowText(aa); pDC->TextOut(590,40,aa); m_place.GetWindowText(aa); pDC->TextOut(590,60,aa); m_time.GetWindowText(aa); pDC->TextOut(590,80,aa); pDC->TextOut(40,200,"电流"); pDC->TextOut(40,220,"电压"); pDC->TextOut(40,240,"电流"); pDC->TextOut(40,260,"电压"); for(int k1=0;k1<18;k1++) { // a=2*i; // point[a]=m_list.GetItemText(i,1); // point[a+1]=m_list.GetItemText(i,2); if(k1<9) { pDC->TextOut(100+60*k1,200,m_list.GetItemText(k1,1)); pDC->TextOut(100+60*k1,220,m_list.GetItemText(k1,2)); } else { pDC->TextOut(100+60*(k1-9),240,m_list.GetItemText(k1,1)); pDC->TextOut(100+60*(k1-9),260,m_list.GetItemText(k1,2)); } } OnDraw(pDC);}// OnDraw(pDC) 就是画了一个坐标图(用点、线组成的) 我还添加了以下代码,是参考别人的 void CFormview_sView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) { // TODO: Add your specialized code here and/or call the base class CFormView::OnPrepareDC(pDC, pInfo); pDC->SetMapMode(MM_ANISOTROPIC); //转换坐标映射方式 CSize size = CSize(800,600); 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); //确定视口大小} xp的那种错误报告对话框----------------------------------------------------------------------那是说这种错误是xp专有的了? to: jszj应该是的,,你能QQ吗? 我截图给你看! 1.在OnPrint最上边加上return;看在打印时是否会有错误,如果没有,就是OnPrint里边的错误,否则,就是OnPrepareDC里的错误 我把OnDraw()去掉的,就不错误了。但OnDraw()也只是画点、线啊,和OnPrint()前面部分一样 你在OnDraw里的第二条语句前边加上return;后看OnDraw会不会出错误 OnDraw里有个Release(pDC);去掉后就可以打了 关闭进程的问题!!!!!!! 循环加多重函数调用会不会出现导常? 求ftp客户端原理,顶者有分 我想声名一个const POINT型的变量,如何去做? 免费开放FTP + 送分,可上传可下载,全部有分.... 让我们一起努力做出一些好的软件。 求教一些关于编辑控件的问题........ 程序如何写http头,发送form数据? 请教!我既不想要对话框有sysmenu又想让程序在任务栏里有图标和程序名称显示! VC中如何在ActiveX中添加属性与方法? 重叠I/O 模型 + 事件通知 的疑问,请教!? 我想作图,在哪个控件上方便一些?
onprint的内容贴出来看看
void CFormview_sView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
{
// TODO: add customized printing code here
CString aa; pDC->TextOut(450,20,"伏安特性检测报告"); pDC->TextOut(140,40,"站 名:"); pDC->TextOut(500,40,"测试人员:");
pDC->TextOut(140,60,"设备名称:"); pDC->TextOut(500,60,"测试地点:");
pDC->TextOut(140,80,"设备编号:"); pDC->TextOut(500,80,"测试时间:");
m_name.GetWindowText(aa);
pDC->TextOut(230,40,aa);
m_nameofequipment.GetWindowText(aa);
pDC->TextOut(230,60,aa);
m_number.GetWindowText(aa);
pDC->TextOut(230,80,aa);
m_person.GetWindowText(aa);
pDC->TextOut(590,40,aa);
m_place.GetWindowText(aa);
pDC->TextOut(590,60,aa);
m_time.GetWindowText(aa);
pDC->TextOut(590,80,aa); pDC->TextOut(40,200,"电流");
pDC->TextOut(40,220,"电压"); pDC->TextOut(40,240,"电流");
pDC->TextOut(40,260,"电压");
for(int k1=0;k1<18;k1++)
{
// a=2*i;
// point[a]=m_list.GetItemText(i,1);
// point[a+1]=m_list.GetItemText(i,2); if(k1<9)
{
pDC->TextOut(100+60*k1,200,m_list.GetItemText(k1,1));
pDC->TextOut(100+60*k1,220,m_list.GetItemText(k1,2));
}
else
{
pDC->TextOut(100+60*(k1-9),240,m_list.GetItemText(k1,1));
pDC->TextOut(100+60*(k1-9),260,m_list.GetItemText(k1,2));
}
}
OnDraw(pDC);
}
// OnDraw(pDC) 就是画了一个坐标图(用点、线组成的)
{
// TODO: Add your specialized code here and/or call the base class
CFormView::OnPrepareDC(pDC, pInfo); pDC->SetMapMode(MM_ANISOTROPIC); //转换坐标映射方式 CSize size = CSize(800,600); 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); //确定视口大小
}
----------------------------------------------------------------------
那是说这种错误是xp专有的了?
但OnDraw()也只是画点、线啊,和OnPrint()前面部分一样