CPreviewView中的MFC打印预览错误

时间:2015-11-23 01:43:20

标签: c++ mfc

我估计我在MFC类CPreviewView中发现了一个错误,只是想知道是否有其他人拥有它。生成具有2页或更多页的文档的预览时,如果设置了2页预览“模式”,则滚动条被设置为好像是1页预览。这意味着对于2页文档(例如)(再次显示在2页预览模式中)显示滚动条(它们不应该),用户可以向下滚动到“第3页”,然后重新生成p1

我认为问题在于{39}左右viewprev.cpp

m_nPages = m_pPreviewInfo->m_nNumPreviewPages;
if (m_nPages == 0)
    m_nPages = 1;
else if (m_nPages > m_nMaxPages)
    m_nPages = m_nMaxPages;     // Sanity Check!

m_nZoomOutPages = m_nPages;

SetScrollSizes(MM_TEXT, CSize(1, 1));   // initialize mapping mode only

if (m_pPreviewInfo->GetMaxPage() < 0x8000 &&
    m_pPreviewInfo->GetMaxPage() - m_pPreviewInfo->GetMinPage() <= 32767U)
{
    SCROLLINFO info;
    info.fMask = SIF_PAGE|SIF_RANGE;
    info.nMin = m_pPreviewInfo->GetMinPage();
    info.nMax = m_pPreviewInfo->GetMaxPage();
    info.nPage = 1;
    if (!SetScrollInfo(SB_VERT, &info, FALSE))
        SetScrollRange(SB_VERT, info.nMin, info.nMax, FALSE);
}
else
    ShowScrollBar(SB_VERT, FALSE);      // if no range specified, or too
                                        // large don't show

这段摘录当然应该有:

info.nMax = m_pPreviewInfo->GetMaxPage() - (m_nPages - 1) ;

代替。

解决方案是自己派生并按https://msdn.microsoft.com/en-us/library/aabc3hc6.aspx#sthash.aKlh2DG4.dpuf覆盖此函数吗?

谢谢!

0 个答案:

没有答案