还在苦苦敲代码开发APP?你out啦! 试试积木搭建APP吧~

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

来源:     2016-10-27 16:54:24    人气:     我有话说( 0 人参与)

我的程序原来是基于CView的,但后来为了支持滚动功能所以按照网上的方法,手动把CView改为CScrollView(一些相应的处理都改了),但是程序...

我的程序原来是基于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

本文源自互联网,采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可,
版权归原作者,如有问题请联系service@tsingfun.com (编辑:admin)
分享到: