为什么从CView继承的类,在对话框中使用时,只要有鼠标的动作就处错误,最后发现把OnMouseActivates(...)重写了就可以了。
希望高手给解释一下!

解决方案 »

  1.   

    CView中在MouseActive时会自动调用GetDocument(),而在CDialog中是没有
    CDocument的。所以有问题。
    一般来讲,CFrame, CView, CDocument是用在一起的,而CDialog, CWnd和
    CListCtrl等是用在一起的。你重写OnMouseActivates就不让CView的缺省GetDocument运行了。不过CView在
    其他地方是不是还有和CDocument打交道的地方就不知道了。一不小心就会有问题的。为什么要在CDialog中用CView?一般用CWnd就可以了。
      

  2.   

    CView中在MouseActive时会自动调用GetDocument(),而在CDialog中是没有
    CDocument的。所以有问题。
      

  3.   

    对话框当中用什么CVIEW,应该是继承于CWND
      

  4.   

    我想在里面画东西,所以想用CView,然后再OnDraw().没有用过CWnd。但现在知道问题在那里了,请问verybigbug,我怎么追踪到这个错误呢。
      

  5.   

    用CWnd也一样。CWnd中有OnPaint可以画面。
    屏蔽掉鼠标后就不会自动调用GetDocument了,就不会有问题了。
    但其他地方是不是还有问题就不确定。你看一下CView的代码就可以知道为什么发生问题。
    建议:用CWnd在Dialog中。不使用CDocument的话就不要用CView
         CView和CDoxument关联比较紧密。