好贷网好贷款

孙鑫VC学习笔记:第十三讲 (三) WM_FILE_NEW消息响应原理

发布时间:2016-12-3 3:59:06 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"孙鑫VC学习笔记:第十三讲 (三) WM_FILE_NEW消息响应原理",主要涉及到孙鑫VC学习笔记:第十三讲 (三) WM_FILE_NEW消息响应原理方面的内容,对于孙鑫VC学习笔记:第十三讲 (三) WM_FILE_NEW消息响应原理感兴趣的同学可以参考一下。

WM_FILE_NEW消息响应原理 当点击“新建”按钮时,会发送WM_FILE_NEW消息,按照消息响应函数的命名规则, 它的响应函数应该叫OnFileNew(),但是在代码中找不到, 通过调试发现,当新建按钮时,程序会调用CGraphicDoc::OnNewDocument(), WM_FILE_NEW的消息是如何响应的呢? 我们可以在VC++的安装目录下找到一个文件 ../Microsoft Visual Studio/VC98/MFC/SRC/APPDLG.CPP 在这个文件中,有一个CWinApp::OnFileNew()函数,它是这样定义的:  Void CWinApp::OnFileNew()  {   if (m_pDocManager !=NULL) m_pDocManager->OnFileNew();}    m_pDocManager是这样定义的:CDocManager * m_pDocManager; CDocManager 是一个文档管理器,它有一个指针链表,维护一系统的文档模版指针。 接着,我们可以在../Microsoft Visual Studio/VC98/MFC/SRC/DOCMGR.CPP文件中找到 CDocManager::OnFileNew()的定义。 再次按下“新建”按钮时,由于框架类对象和视类对象已经创建了,在单文档中没有必要重复创建, 它会重复利用已经创建好的框架类对象和视类对象。 如果是多文档程序则会重复创建框架类对象、视类对象和文档类对象。 --------------------------------------------------------------------------------- 按下“打开”与“保存”按钮时,会执行CGraphicDoc::Serialize方法 在CGraphicDoc类中有个Serialize(CArchive& ar)方法,是文档类提供的用来保存数据和加载数据的函数,其参数就是一个CArchive对象。 注意:如果将一个文件保存之后,马上打开它,程序将不会调用本方法加载数据,        因为当我们保存数据的时候,以前创建的文档类对象与保存的数据关联在一起了,        再次打开刚保存的文件时,MFC框架内部识别出是同一份数据,因为与数据相关的文档类指针已经存在        所以程序不会调用Serialize(CArchive& ar)方法加载相同的数据。 

上一篇:Java NIO原理和使用
下一篇:PHP适合做大型网站吗?

相关文章

相关评论