mfc中view类是从frame类派生的吗

2024-07-11 23:20:44
推荐回答(2个)
回答1:

你想复杂了,其实MFC框架结构没那么绕混。

  1. 不是继承关系,是父子关系。View是一个特殊窗口类,优化了很多窗口响应,但作为独立窗口不符合框架结构,而且关键是用frame结合了一个Doc类和多视图结构,一个frame不是对应一个视图。

  2. 框架处理,和虚函数太大没关系。如果说关系,就是默认基类处理中都是post过去的,继承实现了,post就没了。

  3. 参见1,父子关系获取父指针当然是GetParent,你在frame里面也可以使用this,这是窗口类特性。

  4. 说法古怪,如果是框架内的frame,不修改框架结构,当然和view有关系;如果自己建一个frame,那么需要自己处理框架关系,不处理没有。

回答2:

CFrameWnd和CView都是继承了CWnd

而CMainFrame继承了CFrameWnd
所以CFrameWnd和CView不是子父类关系,不是继承关系

至于哪个响应ontest函数,我想是因为CView是在CFrameWnd之上覆盖着的,所以可以先处理CView里面的,如果没有,再回到CFrameWnd里面的。你认真听听他说什么咯,我也有点忘了。他有说到的。

this是自己的窗口,而CView使用GetParent获取父窗口的指针,因为框架窗口是视类窗口的父窗口,视类窗口在框架窗口的,所以他是父窗口、

//额额。自己写的个人观点,如果错了大家先莫急,先莫喷,请大家指正。谢谢