您的位置:首页 > 其它

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

2016-01-28 17:45 387 查看

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

}

转载网址:

http://blog.sina.com.cn/s/blog_63a881060102vzas.html

http://bbs.csdn.net/topics/320022090
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: