不是定是cview, 是个cformview呢
或者是个ceditview 或者是你派生的类

解决方案 »

  1.   

     if(pView->IsKindOf(pClass))
    该函数用判断得到的pView是否为指定类的派生类,如果不是的话,返回的指针要强行转换指针的后,使用时可能会出现错误。按照你的理解,将无法判断该对象是否可以转换成你要的类对象。使用时肯定会有隐患的。
      

  2.   

    可是CVIEW是所有view的基类呀,不会有问题吧
      

  3.   

    要判断是否是某种View的对象,只能用这种View的RUNTIME_CLASS。
      

  4.   

    例如:CEditView派生于CView;
    CView* pView = new CView;
    如果这样调用
    (CEditView*)pView->Member();(改成员为CEditView的成员函数就有可能出错)
    只有当
    CView* pView = new CEditView;时或者为CEditView的派生类时调用才能成功。也是就是该对象是不是CEditView的对象(派生类对象也是CEditView的对象)。
    你的问题中传递参数CRuntimeClass,就是用来判断得到对象是不是指定的类对象,如果不判断,你在转换时就可能有隐患
      

  5.   

    我的老师说“假设一个view由CtestView类产生,而另外一个view由CtestView2类产生,在这种情况下,如果使用你的方法,如果我要查找由CtestView2类产生出的View,你该如何进行呢?”
       
     可我认为,无论是何view类,其基类必定是CView,所以按照此函数,必定(若存在)可获得一个指向欲查找的派生类对象(如CEditView)的基类pView指针。不知您认为怎样?谢谢