我估计我在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覆盖此函数吗?
谢谢!