首先,在应用程序对象中有一个cdocmanager指针类型的共有数据成员m_pdocmanager,在cdocmanager中维护一个cptrlist类型的链表:m_tempatelist,它是一个保护成员。initinstance函数中调用cwinapp::adddoctemplate函数,实际上是调用m_pdocmanager的adddoctemplate函数向链表m_templatelist添加模板指针。cwinapp提供了getfirstdoctemplateposition和getnextdoctemplate函数实现对m_templatelist链表的访问(实际上是调用了cdocmanager的相关函数)。
在文件操作方面cwinapp提供的最常用的功能是文件的新建(onfilenew)和打开(onfileopen),它也是调用cdocmanager类的同名函数。对于新建,一般的时候在只有一个文档模板的时候,它新建一个空白的文件;如果有多个文档模板的时候,它会出现一个对话框提示选择文档类型。它的源代码如下:
void cdocmanager::onfilenew()
{
if (m_templatelist.isempty())
{
.......
return;
}