Error: must call SetScrollSizes() or SetScaleToFitSize()问题的解决

我的程序原来是基于CView的,但后来为了支持滚动功能所以按照网上的方法,手动把CView改为CScrollView(一些相应的处理都改了),但是程序运行后发生错误,调试发现程序进入下面的错误处理中。

void CScrollView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
    ASSERT_VALID(pDC);

    #ifdef _DEBUG
    if (m_nMapMode == MM_NONE)
    {
        TRACE(traceAppMsg, 0, "Error: must call SetScrollSizes() or SetScaleToFitSize()");
        TRACE(traceAppMsg, 0, "\tbefore painting scroll view.\n");
        ---> ASSERT(FALSE);
        return;
    }
    #endif //_DEBUG
    ......
}

问题原因:

造成这个问题的原因是:窗口一开始就最大化造成的。

 

解决方案1(推荐):

1)在CXXXView的构造函数中加入以下语句:

CScanView::CScanView()
{
  // TODO: 在此处添加构造代码
  CSize size;
  size.cx = size.cy = 4000;
  SetScrollSizes(MM_TEXT,size);
}

 

解决方案2:

2)重载OnPrepareDC函数:

void CScanView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
   // TODO: 在此添加专用代码和/或调用基类
   m_nMapMode = MM_TEXT;
 
   CScrollView::OnPrepareDC(pDC, pInfo);
}

CView SetScrollSizes

分享到:
评论加载中,请稍后...
创APP如搭积木 - 创意无限,梦想即时!
回到顶部