gpt4 book ai didi

c++ - 如何在派生 View 类中实现 CView::OnUpdate

转载 作者:行者123 更新时间:2023-11-28 03:36:46 32 4
gpt4 key购买 nike

OnUpdate 的第三个参数是指向CObject 的指针。该指针必须在实现其自己的 OnUpdate 的 View 类中向下转型。检查转换是否成功的最佳方法是什么?使用 CObject::IsKindOf 还是 dynamic_cast?在MFC项目中使用RTTI可以吗?

最佳答案

如果您使用向导创建了您的 View ,那么它将在您的 View 类的头文件中放置一个 DECLARE_DYNCREATE。如果您手动创建它,我会确保它在您的 View 头文件的类定义中有一个 DECLARE_DYNCREATE(或者至少有一个 DECLARE_DYNAMIC 或 DECLARE_SERIAL——DECLARE_SERIAL 对于 View 类来说通常是矫枉过正)。

然后,当您想要向下转换时,使用 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/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com