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,有些基础原则问题想不明白 展开
(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,有些基础原则问题想不明白 展开
2个回答
展开全部
你想复杂了,其实MFC框架结构没那么绕混。
不是继承关系,是父子关系。View是一个特殊窗口类,优化了很多窗口响应,但作为独立窗口不符合框架结构,而且关键是用frame结合了一个Doc类和多视图结构,一个frame不是对应一个视图。
框架处理,和虚函数太大没关系。如果说关系,就是默认基类处理中都是post过去的,继承实现了,post就没了。
参见1,父子关系获取父指针当然是GetParent,你在frame里面也可以使用this,这是窗口类特性。
说法古怪,如果是框架内的frame,不修改框架结构,当然和view有关系;如果自己建一个frame,那么需要自己处理框架关系,不处理没有。
更多追问追答
追问
1,父子关系不就是基类与派生类关系吗,不就是继承关系吗?class view :public frame这样
追答
你这个是继承。
类之间父子关系是属于翻译中的歧义。
一般不建议将继承类称为父子,因为实际应用中窗口之间存在父子关系,就是实例之间的从属关系。
标准说法应该是父窗口和子窗口。GetParent是获取父窗口,而不是基类。
父子窗口之间没有类的继承和派生关联。
展开全部
CFrameWnd和CView都是继承了CWnd
而CMainFrame继承了CFrameWnd
所以CFrameWnd和CView不是子父类关系,不是继承关系
至于哪个响应ontest函数,我想是因为CView是在CFrameWnd之上覆盖着的,所以可以先处理CView里面的,如果没有,再回到CFrameWnd里面的。你认真听听他说什么咯,我也有点忘了。他有说到的。
this是自己的窗口,而CView使用GetParent获取父窗口的指针,因为框架窗口是视类窗口的父窗口,视类窗口在框架窗口的,所以他是父窗口、
//额额。自己写的个人观点,如果错了大家先莫急,先莫喷,请大家指正。谢谢
而CMainFrame继承了CFrameWnd
所以CFrameWnd和CView不是子父类关系,不是继承关系
至于哪个响应ontest函数,我想是因为CView是在CFrameWnd之上覆盖着的,所以可以先处理CView里面的,如果没有,再回到CFrameWnd里面的。你认真听听他说什么咯,我也有点忘了。他有说到的。
this是自己的窗口,而CView使用GetParent获取父窗口的指针,因为框架窗口是视类窗口的父窗口,视类窗口在框架窗口的,所以他是父窗口、
//额额。自己写的个人观点,如果错了大家先莫急,先莫喷,请大家指正。谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询