我在编写一个MDI程序,程序的各种数据是由一个工程来管理的,类似于VC中的工程。我想让我的程序一次只打开一个工程,也就是说,在新建或打开工程时,如果已有工程打开,就将其关闭(必要时还要提示用户存盘),然后再新建或打开工程,请问这一整套操作该如何实施?是否有现成的源码?请各位指点,谢谢了!
解决方案 »
- ************MFC ActiveX控件问题**************
- 在CButton的重载类里面如何得到该控件的ID?
- 急救!!程序由MFC共享dll改为MFC静态dll出现莫名其妙的错误!
- WSAStartup(MAKEWORD(2,0),&m_WSADATA)
- MFC的文件操作-对.hex文件的操作
- 求《WINDOWS网络编程技术》配套的光盘源代码!3ks
- 什么是PE文件,有什么用。送分
- 特急,请教CString问题!!!!!!!!!!!!!!!!!!!!!!!
- 关于虚拟设备驱动程序的讨论
- 如何用vc++实现windows关机?
- 向大侠请教:怎样得到Windows Media Player的版本信息?
- 我的代码怎么不见拉,全部是00,好象是内存编译后 的东西!
CProjectManager(以下简称CPro),我在CPro中作了一个CMapStringToOb m_listDocTemplate成员,看名字也知道什么意思了把,在CMyApp的InitInstance里。。打字真烦简单说了吧:
因为你接管了OnFileNew,所以当点几菜单时可以调用你的函数,你可以显示一个新建文件类型的对话框,m_listDocTemplate的意思是以后我可以采用OpenDocument("c:\\1.txt","TextEdit");或OpenDocument("c:\\1.cpp", "CodeEdit");来用不同的视图打开不同类型的文档,算了太难打了,你根据这个思路就知道了,反正CWinApp的这些文件操作最后也让CDocManager给接管了,为防止错误,建议在给m_listDocTemplate添加项时给CMyApp也添加。当然最后你全部接管了以后,就不用管DocManager了。如果你想打开Project File时不显示一个ChildFrame,这中方式刚好可以解决。
class CProjectManager
{
CProjectManager();
~CProjectManager(); OpenDocument(LPCTSTR lpszFileName, LPCTSTR lpszDocTemplateName)
{//Get DocTemplate pointer to pDocTemplate;
//use pDocTemplate open file}; InitDocTemplates();//Calls in CMyApp()::InitInstance()
OnFileNew();//CMyApp::OnFileNew(){GetProjectManager()->OnFileNew();}
.....
CMapStringToOb m_listDocTemplate;//Why did I use StringToOb?
//Because I Want to load settings from XML, and my XML settings file like this:
...
<Type ext="cpp" defaultTemplate="CodeEdit" otherTemplate="TextEdit|Browser"/>
...
我的英文有点烂,不过还是比这台电脑上的输入法好用点。