我现在的程序是基于多文档视图的,文件保存的方式采用序列化保存的方式,自己专门写了一个用于序列化保存的类,没有用Document中的Serialize函数。打开文件和保存文件以前都是采用的默认的方式,我没有进行重载。现在我想重载这些函数,不知道把这些函数写在那个类中比较合理?在Doc中,Frame中还是View中呢?哪个更合理一些。还有采用默认的打开方式时,打开一个文件我如何获得这个文件的句柄(指针)啊?如果在重载了保存函数时,如何来确定是否需要弹出保存文件的对话框?因为保存时会有两种情况产生:1、当新建一个文件后需要保存时 2、当打开一个文件修改后需要保存时,在第一种情况下是需要弹出一个保存的对话框让用户选择路径和文件名进行保存,而在第二种情况下是直接保存在打开的文件中。是不是在默认情况下时程序自己维护着一个文件路径,那又如何获得这个文件路径?如果自己重载保存这个函数,大家一般又是如何处理这两种情况呢?还有一个问题就是在资源管理器中双击一个文件,启动相应的程序并打开这个文件,这个时候程序中又是那个函数进行了响应?如何得到这个文件的句柄和路径?还有拖放的时候,程序又是如何处理的?
问题比较多,主要是我对MFC的这套流程不熟悉,望大家给耐心的讲一下,想必有很多人也是喜欢听的。谢谢!

解决方案 »

  1.   

    这个问题我也考虑了很长时间了,还是没有找到答案...不过楼主可以到: http://www-900.ibm.com/developerWorks/cn/java/index.shtml 看看,上面也许你您想要的东西!!...要是您找到了答案.请告诉我一下...关注中...
      

  2.   

    一个个说吧,个人看法,不一定对:
    对于稳定操作一般是在doc中,
    保存的路径一般是程序所在的路径,如果楼主想把最近打开的文件路径存在注册表或者ini文件中也可以,程序启动的时候再装入.
    至于文件关联,双击打开,我不是很清楚,没有做过,可能要添加一个什么东西到注册表中吧,至于双击后,肯定是Doc类的打开函数了
    拖放文件就是Doc类的open函数,在MDI中很容易,
    // Allow user drag files, add this code in CMainFrame::OnCreate()
    DragAcceptFiles();
    就可以了,
      

  3.   

    文件关联的问题,你用vc 生成一个多文档程序,然后在最后第二步时,有个高级选项按钮,里面可以设置ChildWnd大小和设置文档扩展名。
    你随便填二三个字母。然后自己就可以看见了。有.reg文件。就是文件件中关系的东西。
      

  4.   

    楼上的几位,谢谢你们的关注。文件关联这些功能我都已经实现了的。不过用的都是MFC默认的东东。但我不知道当双击某文件的,程序调用了那些函数,因为我想在打开文件时我能第一时间得到该文件的控制权。
      

  5.   

    是数据就放在DOC里,是视图操作就在VIEW里,如果想知道这里面是怎么回事,看看<深入浅出MFC>吧!里面说的很详细!
      

  6.   

    jackion31根据和你QQ上的交流,你可以这样实现,先自己设计一个数据文件,把序列化的文件和其他媒体文件以二进制方式存储在这个文件中。然后重载OnOpenDocument()和OnSaveDocument()这两个函数,在函数体内先进行文件的预处理,然后调用基类的这两个函数,这样就可以实现你想要的功能。