Список документов в MDI приложении

Каждый шаблон документа содержит список всех документов своего типа. Мэнеджер документов содержит список всех шаблонов приложения. Таким образом можно сделать сначало перебор по всем шаблонам, а в каждом шаблоне сделать перебор по всем документам в приложении.

void DocumentList()
{
    
CDocManager* pDocManager = AfxGetApp()->m_pDocManager;

    
POSITION posTemplate = pDocManager->GetFirstDocTemplatePosition();
    
while(posTemplate)
    {
        
CDocTemplate* pDocTemplate = pDocManager->GetNextDocTemplate(posTemplate);

        
POSITION posDoc = pDocTemplate->GetFirstDocPosition();
        
while(posDoc)
        {
            
CDocument* pDoc = pDocTemplate->GetNextDoc(posDoc);
            
// Здесь можно сделать то, что нужно с каждым документом.
            // Если нужен какой-то определенный тип документов,
            // для этого можно воспользоваться runtime классом.
            // Вот пример как это сделать:
            
if(pDoc->IsKindOf(RUNTIME_CLASS(CMyDocument)))
            {
                
// CMyDocument - это ваш класс документа.
            
}
        }
    }
}
Примечание:
Для того чтобы в документе был объявлен runtime class, необходимо вставить в объявление документа как минимум макрос
DECLARE_DYNAMIC(CMyDocument) А в файл реализации класса
IMPLEMENT_DYNAMIC(CMyDocument, CDocument)