Часто задаваемые вопросы и ответы по C/C++/Visual C++
Последнее обновление: 27.08.2003
FAQ по C/C++/Visual C++
Работа с сетью
Список документов в MDI приложении
Составители: SUnteXx, Leprecon
Список документов в MDI приложении
A: (Leprecon)
Оригинальная ссылка: нету

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

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)

Если есть какие-то замечания, предложения или что-то еще, то пишите:
leprecon@pisem.net.
Содержание Обсудить на форуме « Предыдущая статья | Следующая статья »
Перейти к FAQ:  
FAQ составлен по материалам Форума на Исходниках.Ру.
Copyright © 2002 by Sources.ru. All rights reserved.