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

(1)mfc中CMainFrame和CTestView是,基类与子类的关系吗?他们在创建的时候,是分别创建了一个CMainFrame类对象AA,一个CTestView类对... (1)mfc中CMainFrame和CTestView是,基类与子类的关系吗?他们在创建的时候,是分别创建了一个CMainFrame类对象AA,一个CTestView类对象BB吗,还是只创建一个子类CTestView对象就够了
(2)我看孙鑫的教程,说当frame类与view类中同时加入ontest()消息响应,mfc先把消息给frame,然后再给view类,如果view有对应函数则响应,没有则在交还给frame类,这种先子类后基类的逻辑是因为存在一个虚函数virtual所以先子类吗,还是压根mfc就这么安排的,跟虚函数没关
(3)在view类对象BB中想使用类指针可以使用this,但是想用调用基类framed类对象AA就要用getparent(),这个geparen函数就是mfc中特有的可以再子类基类对象中指针调用转换的函数吗,孙鑫教程这里讲到,在使用getparen调用后,也会先响应view然后再响应frame,这与虚函数有关系么
(4)在mfc中,修改过的frame类,都会完全被派生给view类,还是,只是继承了frame一部分初始基本成员

大家知道哪个,麻烦回答下,刚学mfc,有些基础原则问题想不明白
展开
 我来答
bhtzu
2013-03-09 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4210万
展开全部

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

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

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

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

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

更多追问追答
追问
1,父子关系不就是基类与派生类关系吗,不就是继承关系吗?class view :public frame这样
追答
你这个是继承。
类之间父子关系是属于翻译中的歧义。
一般不建议将继承类称为父子,因为实际应用中窗口之间存在父子关系,就是实例之间的从属关系。
标准说法应该是父窗口和子窗口。GetParent是获取父窗口,而不是基类。
父子窗口之间没有类的继承和派生关联。
百度网友2976c9b
2013-03-10 · TA获得超过1555个赞
知道小有建树答主
回答量:934
采纳率:0%
帮助的人:713万
展开全部
CFrameWnd和CView都是继承了CWnd

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

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

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

//额额。自己写的个人观点,如果错了大家先莫急,先莫喷,请大家指正。谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式