2.7--如何编程来创建一个新(空)文档?
来源:互联网 发布:java多线程同步方法 编辑:程序博客网 时间:2024/05/17 07:30
某些应用程序需要创建新(空)文档,而不需要强迫用户选择file->new菜单命令,例如:当用户在应用程序的窗口中执行某个特定的命令时将创建一个文档;或者执行另外的菜单命令时,间接的创建文档,下面的技术解释了如何达到想要的目的:
第一种技术:
如果打算正确的再现“File->New”行为,最简单的方法是通过发送适当的WM_COMMANDD消息来模仿“File->New”菜单命令:
AfxGetMainWnd()->SendMessage(WM_COMMAND,ID_FILE_NEW);
如果愿意,也可以采用PostMessage(WM_COMMAND,ID_FILE_NEW);这种指令通过正常的MFC消息映射处理来间接的调用CWinApp::OnFileNew().
第二种技术:
如果应用程序有多个文档模板对象,并且打算基于某个特定的文档模板来创建一个新文档,那么必须明确选择所使用的文档模板对象,并传输参数NULL来调用它自己的CMultiDocTemplate::OpenDocumentFile()函数
m_ptTemplate->OpenDocumentFile(NULL);
必须采用某种途径来存储各种文档模板对象的指针,这样,才能在上面这行代码中正确的设置m_ptTemplate指针。通常来说,存储这些指针的最简单方法是作为应用程序来的成员变量。
这样要编写代码来创建一个基于特定模板的新文档,就可以在代码的任何地方简单的使用下面的调用:
theApp.m_ptTemplate->OpenDocumentFile(NULL);
附加注释:
这两种解决方案都使用普通的 MFC文档模板对象创建机制 来创建新的文档对象、新的视图框架窗口、新的视图窗口。如果应用程序已经注册了多个文档模板( CWinApp::AddDocTemplate() ),那么第一种解决方案将正确的再现File->New行为,并提示用户选择要使用的文档模板----除非经过修改,不弹出对话框。
另一方面,第二种解决方案允许代码明确的选择所要使用的文档模板对象,这种方法可以很好的控制MFC将要创建的文档、视图、视图框架窗口对象的类。
如果打算使用第二种方案,并且不希望在CWinApp的派生类中暴露文档模板成员变量,那么可以把文档模板指针设为protected,而把文档创建逻辑封装在public成员变量中,代码如下:
可以如下调用创建新文档、框架、视图
CMyDoc1* pDoc=theApp.CreateNewDoc1();
这种实现中使用封装函数的一个优点是,我们返回一个正确定义了类型的指针时,该指针指向最新创建过的文档。这样,客户代码得到一个“真实的”CMyDoc1*指针,而无需进一步的向下映射。
- 2.7--如何编程来创建一个新(空)文档?
- 如何防止一个MDI应用程序在启动时打开一个新(空)文档?(新)
- 2.12--如何编程来关闭一个文档?
- 创建一个新的视图窗口来显示已打开的文档中的内容
- javascript中如何判断一个新创建对象是无属性的空对象?
- 在mfc编程中,创建多文档应用程序时,如何关闭启动时自动打开的空文档
- 如何创建一个空的list
- 2.8--如何编程来打开一个已存在的文档文件?
- 3.6如何编程来关闭一个打开文档的所有视图?
- 使用java2word包中的Document类来创建新文档
- Javascript如何创建一个新的实例(指针)
- 如何使用在某个“文档模板”中确定的视图、框架窗口来打开一个新视图?
- VC如何创建一个新的线程
- Linux内核如何创建一个新进程
- Linux系统如何创建一个新进程
- 如何创建一个新的TWRP主题
- keil4 如何创建一个新的工程。
- 用PHP4中的PDF扩展来创建一个PDF文档
- 当oracle出现 格式与字符串格式不匹配解决办法
- BEA-090482
- 第一次写博客
- JavaScript内存泄漏检测工具
- 发博客能得积分吗
- 2.7--如何编程来创建一个新(空)文档?
- zookeeper项目日志
- Solaris 网络 配置
- 在Linux下如何使用自己的库函数
- VC中调用外部程序方式总结
- 回忆杨小凯的一次谈话
- “万博港模式”探析
- Java 操作文本 封装类
- Studying note of GCC-3.4.6 source (16)