C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Список документов в MDI приложении / MFC / Visual C++

Список документов в 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.