由于具体细节比较复杂,只说一下大道上的。回想不起来就看《深入浅出MFC》。嘿嘿!
要实现多文档类型,主要是要添加相应的DocTemplate,然后在用App里面的AddTemplate将文档类型保存起来。在创建新的文档类型是:要分别为原来的文档类型准备相应的一套资源(菜单,图标等)(手动添加),以及添加这套资源对应的字符串资源。然后就完成相应的CDoc类,CView类,CMDIChildFrame。
这三者是创建新的子窗口的必须的三大法宝。具体的《深入浅出MFC》中有详细介绍。
完成上面的几步后,在每次点击新建文件时,头回弹出对话框,咨询要创建的文档类型。在同一个App下可以打开多个文档类型,这就是早期出现的“超级软件”:即可以进行字处理,又可以进行图像编辑,有可以进行表格处理的强大软件的根源。
另外注意MDI程序自带的【windows】-》【new window】是application framework里面自带的消息映射,在你的项目工程里是找不到其MESSAGE_MAP的。此消息的处理函数的CMDIFrameWnd::OnWindowNew();所以要实现同一文档多种表现,且彼此独立窗口的话,可以采用多文档实现方法,只是把其中CView类换掉,其他做法一样,然后就是自己创建一个菜单项,在此菜单项对应的处理函数里面写上CMIDFrameWnd::OnWindowNew()的代码,当然代码不可能完全一样,有一行需要改动,就是对应DocTemplate指针,将其改写为你新家的文档类型。如果没有为该文档添加对应的字符串资源就不会出现对话框选择文档类型,那么就可以实现一种文档类型多种表现形式了。