我在VC2008 sp1下用MFC开发应用程序,每个项目文件包含多个采样数据文件需要处理,一次可以打开多个项目,便于讨论就拿VC2008的solution/projiect/file这种结构说事。这三者都定义为CDocument的话,sln/pjt对应的窗口不在ChildFrame里,而在旁边的旁边的dock窗口里,前且sln与pjt的信息在一个窗口里,貌似两个CDocument共用一个CView是行不通的吧?这样的话sln与pjt就不能用CDocument了。而我的采样数据文件又不能单独打开,因为有些信息是保存在pjt里的。我的做法是打开pjt,列出数据,再双击打开数据文件。勉强还能用CDocument,只不过不能在打开文件对话框里用它,也不能在文件系统里注册它。当然完全抛开Doc/View也是个办法,现在在考虑哪种方案比较好,希望做过类似项目的能指点一下。

解决方案 »

  1.   

    目前找到解决办法:暂时只考虑Project和file
    向导生成的doc/view按file的要求来设置,假设CDocument的子类名称为CMyfileDoc,将重载函数OnOpenDocument()里对CDocument::OnOpenDocument()的调用去掉,将CDocument::OnOpenDocument()复制一份过来,按自己的要求修改文件打开方式。Project要仿照CSingleDocTemplate或CMultDocTemplate类,做一个自定义的CDocTemplate的子类。
    在OpenDocumentFile()成员函数中去掉CreateNewFrame()、InitialUpdateFrame()之类的去掉,改成到文件列表窗口里的树形控件里显示。大致这个思路,还没做完。准备结贴了,跟贴散分。