(第四版中文版)[十六]读和写文档-SDI应用程序:序列化,双击运行程序,拖放运行,快捷方式的实现
来源:互联网 发布:应采儿长相知乎 编辑:程序博客网 时间:2024/05/16 17:51
序列化:
即对象可以被持续。意即当程序退出时,文档被存在磁盘上,当程序重启时又可以恢复。对象的这种存盘和恢复的过程即称为序列化。
磁盘文件和归档:
Serialize函数对数据进行的读和写:在MFC中,磁盘文件是通过CFile类的对象来表示,CFile类对通过Win32函数CreateFile所获得的二进制文件句柄进行了封装。该文件句柄和通过调用C运行库fopen函数所获得的带缓冲区的FILE指针有所不同,它是一个二进制文件的句柄,应用程序框架借助于该文件句柄来调用win32函数ReadFile、WriteFile、SetfilePointer。如果应用程序不直接利用磁盘I/O,而只依赖于序列化处理过程,那么可以避免直接使用CFile对象。在Serialize函数和CFile对象之间,还有一个归档对象(CArchive类对象)。该归档对象为CFile对象缓存数据,它同时还保存一个内部标记,用来标识归档是存入还是载入。在FileOPen和FileSave的处理过程中会调用文档的Serialize函数。
可序列化的类必须直接或间接地从CObject派生而来,并在声明中必须包含DECLARE_SERIAL宏调用,在类的实现文件中,必须包含IMPLEMENT_SERIAL宏调用。
大多数序列化函数都需要调用基类的Serialize函数。
从归档中载入-内嵌对象和指针:
对于CObjecf 派生类的内嵌对象总是直接调用 Serialize()。
从Explorer启动和拖放(双击文档能运行某个程序来打开):
在 InitInstance() 里调用
RegisterShellFileType(TRUE) ;
在注册表里会加入两个条目:
HKEY_CLASSES_ROOT顶层键下,新加入一个子键和一个数据字符串。
在文档上双击:
InitInstance() 里的 EnableShellOpen() ;
它支持通过DDE消息执行程序。
允许拖放:
应用程序对象的公有数据成员m_pMainWnd指针指向CFrameWnd(或CMDIFrameWnd)对象。当把一个文件拖到框架窗口里的任何地方时,都会激发对CFrameWnd::OnDropFiles 的调用。AppWizard 在 InitInstance() 里产生一行代码,使拖放可以工作:
m_pMainWnd->DragAcceptFiles() ;
程序启动参数:
InitInstance() 函数调用 ParseCommandLine 和 ProcessShellCommand() 函数以处理命令行。如果命令行包含一些看起来像文件名一样的字符,程序会马上装入该文件。因此可以建立一个Windows快捷方式以用指定的文档文件运行程序。
- (第四版中文版)[十六]读和写文档-SDI应用程序:序列化,双击运行程序,拖放运行,快捷方式的实现
- (第四版中文版)[十七]读和写文档-MDI应用程序
- QtCreate运行程序和直接双击运行程序的区别!
- 用JDK也能编可双击运行的应用程序
- SDI运行出现“建立空文档失败”的解决方法
- 双击运行JAVA程序
- 双击运行Java程序
- 编译器运行程序和直接双击运行程序一个成功一个失败的问题说明
- VC SDI程序在英文版系统不能运行
- MFC程序(SDI)一开始运行最大化
- MFC程序(SDI)一开始运行最大化详解
- MFC程序(SDI)一开始运行最大化
- MFC程序(SDI)一开始运行最大化
- Win32程序接收双击和拖放文件
- 单文档应用程序SDI的视图切换
- 单文档应用程序SDI的视图切换
- 双击jar文件运行程序
- 双击jar文件运行程序
- Eclipse快捷键大全(转载)
- [数据统计]百度在调低索引库的容量
- CSharp Tips:调用Win32 API如何处理指针类型的参数.doc
- tomcat5.5配置
- 砍价大法-教你买笔记本电脑
- (第四版中文版)[十六]读和写文档-SDI应用程序:序列化,双击运行程序,拖放运行,快捷方式的实现
- 安装虚拟打印机
- 先人的DELPHI基础开发技巧
- 怎样快速查出Oracle 数据库中的锁等待
- 文件上传下载(2)
- 线程同步1
- 文件上传下载(3)
- 线程同步2
- asp.net的性能优化