Visual c++ 打印时出现调试断言错误

Visual c++ 打印时出现调试断言错误,visual-c++,mfc,rich-text-editor,Visual C++,Mfc,Rich Text Editor,我在VisualStudio2010专业版中创建了一个简单的文本编辑器。基本上,我修改了VS2010向导自动生成的MFC MDI程序。问题是,当我打印时,它在viewrich.cpp第294行中给了我一个调试断言错误。我没有修改代码中与打印相关的任何内容,尽管我使用富编辑的方式可能有问题。这是我所有的信息。提前谢谢 Viewrich.cpp BOOL CRichEditView::PaginateTo(CDC* pDC, CPrintInfo* pInfo) // attempts pagina

我在VisualStudio2010专业版中创建了一个简单的文本编辑器。基本上,我修改了VS2010向导自动生成的MFC MDI程序。问题是,当我打印时,它在viewrich.cpp第294行中给了我一个调试断言错误。我没有修改代码中与打印相关的任何内容,尽管我使用富编辑的方式可能有问题。这是我所有的信息。提前谢谢

Viewrich.cpp

BOOL CRichEditView::PaginateTo(CDC* pDC, CPrintInfo* pInfo)
// attempts pagination to pInfo->m_nCurPage, TRUE == success
{
ASSERT_VALID(this);
ASSERT_VALID(pDC);

CRect rectSave = pInfo->m_rectDraw;
UINT nPageSave = pInfo->m_nCurPage;
ASSERT(nPageSave > 1); // LINE 294
ASSERT(nPageSave >= (UINT)m_aPageStart.GetSize());
VERIFY(pDC->SaveDC() != 0);
pDC->IntersectClipRect(0, 0, 0, 0);
pInfo->m_nCurPage = (int)m_aPageStart.GetSize();
while (pInfo->m_nCurPage < nPageSave)
{
    ASSERT(pInfo->m_nCurPage == (UINT)m_aPageStart.GetSize());
    OnPrepareDC(pDC, pInfo);
    ASSERT(pInfo->m_bContinuePrinting);
    pInfo->m_rectDraw.SetRect(0, 0,
        pDC->GetDeviceCaps(HORZRES), pDC->GetDeviceCaps(VERTRES));
    pDC->DPtoLP(&pInfo->m_rectDraw);
    OnPrint(pDC, pInfo);
    if (pInfo->m_nCurPage == (UINT)m_aPageStart.GetSize())
        break;
    ++pInfo->m_nCurPage;
}
BOOL bResult = pInfo->m_nCurPage == nPageSave;
pDC->RestoreDC(-1);
pInfo->m_nCurPage = nPageSave;
pInfo->m_rectDraw = rectSave;
ASSERT_VALID(this);
return bResult;
}

断言说明了一切:

UINT nPageSave = pInfo->m_nCurPage;
ASSERT(nPageSave > 1);
这是要打印/分页的当前页面的值。在CPrintInfo的构造函数中将其设置为1。但有些东西改变了它,使它为0或负值。通常该值完全由RTF打印输出控制。所以你必须做些事情来操纵它


您必须在cpritinfo中设置最小页面和最大页面值(SetMinPage和SetMaxPage)。

您可以发布断言的MFC代码,以及启动打印的代码吗查看
OnPreparePrinting
()的文档,似乎您必须调用
pInfo->SetMaxPage()
。我已经设置了最小页面和最大页面,但它仍然给我相同的错误。。。
UINT nPageSave = pInfo->m_nCurPage;
ASSERT(nPageSave > 1);