开始我的View类是从CView继承的,后来为了支持滚动,改成了从CStrollView继承但是运行的时候出现DEBUG Assertion Failed,void CScrollView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
ASSERT_VALID(pDC);#ifdef _DEBUG
if (m_nMapMode == MM_NONE)
{
TRACE0("Error: must call SetScrollSizes() or SetScaleToFitSize()");
TRACE0("\tbefore painting scroll view.\n");
ASSERT(FALSE);        //错误出现在这个地方****************************
return;
}
..............................................................请问这是为什么? 我该怎么调试,察看哪些变量呢?

解决方案 »

  1.   

    ASSERT(exp)本来就是来判断exp的TRUE or FALSE 的,你直接就FALSE,那肯定出错了!
      

  2.   

    不是我输入的代码阿
    那段代码是系统自带的,即使改成TRUE也还是有一样的问题
    ASSERT()后面好像不应该直接跟true或者false的阿
      

  3.   

    CScrollView是系统类,不是你生成的类吧?
      

  4.   

    if (m_nMapMode == MM_NONE)进入错误处理,你的m_nMapMode不存在,你是不是没有设置啊?不然不能够正确执行OnPrepareDC()。
      

  5.   

    CScrollView是系统类啊,不是我自己的……请教你怎么看出来我的m_nMapMode不存在? 要设置的话,在哪设置呢
      

  6.   

    同意tufaqing,其实错误的不是ASSERT(FALSE); 而是m_nMapMode == MM_NONE,
    当m_nMapMode == MM_NONE成立,就进入错误处理啦。
      

  7.   

    请问该如何调试呢??
    m_nMapMode究竟是个什么? MSDN中查不到
      

  8.   

    看看msdn里关于CScrollView类,在SetScrollSizes()里可以设置m_nMapMode(view的匹配模式)