简单问题盼指教

cooliu 2000-09-13 12:50:00
各位高手:
我在学习MFC时遇到几处不懂的地方,还请指教。
1。在InitInstance()中new一个文档模板后,此时应该生成文档对象,框架
对象,及视图对象(我看书得之)。但我调试跟踪函数后,未发现有生成以上三
个对象的语句,请问是如何生成的。
2。在MDI中执行LoadFrame()函数,可触发WM—CREATE消息,引起OnCreate()
函数调用;请问在SDI中又是如何触发WM—CREATE消息的。
...全文
205 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Holly 2000-09-13
  • 打赏
  • 举报
回复
RUNTIME_CLASS宏只是将三个类的类型存放在CRuntimeClass中,在CDocTemplate中有成员变量保存这三个类!

生成的顺序是:(限于SDI)
CDocTemplate::CreateNewDocument()中先生成Doc的实体;
CDocTemplate::CreateNewFrame()中生成FrameWnd的实体;
CFrameWnd::CreateView()中生成View的实体;
坎坷的菜贩 2000-09-13
  • 打赏
  • 举报
回复
cooliu你可以查看RUNTIME_CLASS宏的代码。
cooliu 2000-09-13
  • 打赏
  • 举报
回复
但是
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CTestDoc),
RUNTIME_CLASS(CMainFrame), // main SDI frame window
RUNTIME_CLASS(CTestView));
中的RUNTIME_CALSS返回的只是CRunTimeClass类的地址,难道说此动作引发宏的调用而分别产生
类对象吗?若是,我怎么在CSingleDocTemplate的构造函数中找不到;若不是,那这三个类对象是
如何按顺序分别生成的,还请告之
lgs 2000-09-13
  • 打赏
  • 举报
回复
Holly讲得对,由CRuntimeClass的CreateObject产生。
Holly 2000-09-13
  • 打赏
  • 举报
回复
1.三个类DOC,VIEW,FRAME都是Runtime生成,他们都有一个函数CreateObject(),在头文件和CPP中分别都有DECLARE_DYNCREATE和IMPLEMENT_DYNCREATE的Runtime机制声明,CreateObject的代码就在其中!
由于CreateObject是CObject就有的,利用继承的机制使使用了上述两个宏的类具有动态产生的特性,其实CreateObject的代码就是return new classname;
2.对于主框架OnCreate的调用,MDI和SDI没有区别;
cooliu 2000-09-13
  • 打赏
  • 举报
回复
lgs兄:
我就是找不到三个类生成的语句,盼详细告之!
lgs 2000-09-13
  • 打赏
  • 举报
回复
而没有文档/视图支持的程序,主框架窗口的产生也是用LoadFrame()函数。
lgs 2000-09-13
  • 打赏
  • 举报
回复
文档|视图|框架产生在下面的语句:
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CTestDoc),
RUNTIME_CLASS(CMainFrame), // main SDI frame window
RUNTIME_CLASS(CTestView));
分别构造文档,视图,框架对象,Windows创建视图和框架窗口,窗口自然会接收到Windows发送的WM_CREATE消息,以便你在OnCreate()里面创建工具条和状态条,至于文档模板的构造而引起文档,视图,框架的产生,详细你可以查看Microsift提供的源代码。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧