打印出错:0x6E4C420D (winspool.drv) (MyPrint.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0xCDCD

~Ethan~ 2019-01-26 03:24:30
我想做个打印的helloworld程序,出现以下报错。各位大神帮我看看。谢谢了!
...全文
219 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2019-01-28
  • 打赏
  • 举报
回复

void CDlg1Dlg::OnButton2()
{
// TODO: Add your control notification handler code here

CPrintDialog dlg(TRUE, PD_ALLPAGES, this);

dlg.m_pd.nMinPage = 1;
dlg.m_pd.nMaxPage = 10;
dlg.m_pd.nFromPage = 1;
dlg.m_pd.nToPage = 10;

if(dlg.DoModal() == IDOK)
{
HDC hDC = dlg.CreatePrinterDC();

DOCINFO docInfo = { sizeof(DOCINFO), _T("MyPrintDOC") };

StartDoc(hDC, &docInfo);

for(int iPage=dlg.m_pd.nFromPage-1; iPage<dlg.m_pd.nToPage; iPage++)
{
StartPage(hDC);

//在DC上绘制
{
TCHAR szText[64];
_stprintf_s(szText, _T("PAGE_%d"), iPage+1);
TextOut(hDC, 0, 0, szText, _tcslen(szText));
}

EndPage(hDC);
}

EndDoc(hDC);

DeleteDC(hDC);
}
}

Eleven 2019-01-28
  • 打赏
  • 举报
回复
Debug模式下F10单步看看那个函数执行失败了?
腹空 2019-01-28
  • 打赏
  • 举报
回复
谢谢大犇!!
腹空 2019-01-26
  • 打赏
  • 举报
回复
这是源代码
引用 3 楼 qq_42580732 的回复:
void CMyPrintDlg::OnBnClickedOk()
{
	CDC *m_pDC = GetDC();
	double screenx, screeny;
	screenx = m_pDC->GetDeviceCaps(LOGPIXELSX);
	screeny = m_pDC->GetDeviceCaps(LOGPIXELSY);
	CPrintDialog m_printdlg(FALSE);
	if (m_printdlg.DoModal() == IDOK)
	{
		CDC *dc = GetDC();
		dc->Attach(m_printdlg.GetPrinterDC());
		dc->m_hDC = m_printdlg.GetPrinterDC();
		double printx, printy;
		printx = dc->GetDeviceCaps(LOGPIXELSX);
		printy = dc->GetDeviceCaps(LOGPIXELSY);
		double ratex, ratey;
		ratex = printx / screenx;
		ratey = printy / screeny;
		DOCINFOW *ps = new DOCINFO;
		ps->lpszDocName = char2wchar("printstart");
		dc->CDC::StartDoc(ps);
		dc->TextOut((int)ratex * 5, (int)ratex * 10, (CString)"hello world");
		dc->CDC::EndDoc();
	}
	// TODO: 在此添加控件通知处理程序代码
	CDialogEx::OnOK();
}
腹空 2019-01-26
  • 打赏
  • 举报
回复
void CMyPrintDlg::OnBnClickedOk()
{
	CDC *m_pDC = GetDC();
	double screenx, screeny;
	screenx = m_pDC->GetDeviceCaps(LOGPIXELSX);
	screeny = m_pDC->GetDeviceCaps(LOGPIXELSY);
	CPrintDialog m_printdlg(FALSE);
	if (m_printdlg.DoModal() == IDOK)
	{
		CDC *dc = GetDC();
		dc->Attach(m_printdlg.GetPrinterDC());
		dc->m_hDC = m_printdlg.GetPrinterDC();
		double printx, printy;
		printx = dc->GetDeviceCaps(LOGPIXELSX);
		printy = dc->GetDeviceCaps(LOGPIXELSY);
		double ratex, ratey;
		ratex = printx / screenx;
		ratey = printy / screeny;
		DOCINFOW *ps = new DOCINFO;
		ps->lpszDocName = char2wchar("printstart");
		dc->CDC::StartDoc(ps);
		dc->TextOut((int)ratex * 5, (int)ratex * 10, (CString)"hello world");
		dc->CDC::EndDoc();
	}
	// TODO: 在此添加控件通知处理程序代码
	CDialogEx::OnOK();
}
腹空 2019-01-26
  • 打赏
  • 举报
回复
zgl7903 2019-01-26
  • 打赏
  • 举报
回复
图 看 不 清 楚

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧