OnUpdate
的第三个参数是指向CObject
的指针。指针必须在实现自己的OnUpdate
的视图类中向下转换。检查强制转换是否成功的最佳方法是什么?使用CObject::IsKindOf
还是dynamic_cast
?在MFC项目中使用RTTI可以吗?
最佳答案
如果使用向导创建了视图,则它将在视图类的头文件中放入DECLARE_DYNCREATE。如果您手动创建它,那么我将确保它在视图的头文件的类定义中具有DECLARE_DYNCREATE(或者至少DECLARE_DYNAMIC或DECLARE_SERIAL-DECLARE_SERIAL对于视图类而言通常是多余的)。
然后,当您要向下转换时,请使用DYNAMIC_DOWNCAST宏,并在返回时测试非NULL。
CView * pView = DYNAMIC_DOWNCAST(CView,pObject); //是一种用法
不要听不使用MFC宏的建议,因为它不是可移植的...如果您正在编写CView派生类,则它已经不可移植-除非您使用Wind / U之类的工具包,然后DYNAMIC_DOWNCAST将是便携式。
关于c++ - 如何在派生 View 类中实现CView::OnUpdate,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10634317/