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 руб./мес


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




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

Список видов в документе
A: (Leprecon)
Оригинальная ссылка: нету

Перебор видов какого-то документа реализовать очень просто. Для этого в классе документа реализованны две функции:
// Эта функция возвращает позицию первого вида в списке видов документа.
POSITION CDocument::GetFirstViewPosition();
// Эта функция возвращает вид и увеличивает счетчик на еденицу.
CView* CDocument::GetNextView(POSITION& rPosition);

Вот так можно получить все виды данного документа:
void ViewList(CDocument* pDoc)
{
    POSITION pos = pDoc->GetFirstViewPosition();
    while(pos)
    {
        CView* pView = pDoc->GetNextView(pos);
        // Здесь вы можете делать с каждым видом то, что вам нужно.
    }
}
Очень часто нужно добраться до какого-то определенного вида в документе. Например если фрэйм вашего документа разделен сплиттером на два вертикальных вида. Пусть вы используете для левого вида класс CLeftView, а для правого вида класс CMyView, тогда вот как можно получить какой-нибудь определенный вид:
void FindView(CDocument* pDoc)
{
    POSITION pos = pDoc->GetFirstViewPosition();
    while(pos)
    {
        CView* pView = pDoc->GetNextView(pos);
        if(pView->IsKindOf(RUNTIME_CLASS(CLeftView)))
        {
            CLeftView* pLeftView = (CLeftView*) pView;
            // Добрались до левого вида.

            continue;
        }
        if(pView->IsKindOf(RUNTIME_CLASS(CMyView)))
        {
            CMyView* pMyView = (CMyView*) pView;
            // Добрались до правого вида.

            continue;
        }
    }
}

Если есть какие-то замечания, предложения или что-то еще, то пишите:
leprecon@pisem.net.