Образец VIEWEX: демонстрация нескольких представлений, представлений прокрутки и окон-разделителей

Обновлен: Ноябрь 2007

В образце VIEWEX показаны следующие элементы.

  • Статическое окно-разделитель, в котором никогда не изменяется порядок и число областей, а области обычно имеют различные классы представлений.

  • Представление формы (CFormView), которое остается синхронизированным с другими представлениями в том же документе.

  • Обмен данными диалоговых окон (DDX), в частности для данных переключателя.

В образце VIEWEX показан простой документ. Его данные состоят из строки и ее цвета.

1d7781f1.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

Этот образец кода служит для демонстрации основных принципов и не предназначен для использования в приложениях или на веб-узлах, поскольку не может считаться примером наиболее безопасного кода. Корпорация Майкрософт не несет ответственности за случайные или косвенные убытки в случае использования образца кода не по назначению.

Чтобы получить образцы и инструкции по их установке, выполните следующие действия.

  • В меню Справка среды Visual Studio выберите пункт Примеры.

    Дополнительные сведения см. в разделе Поиск файлов примеров.

  • Самая последняя версия и полный список образцов доступны в Интернете на странице образцов Visual Studio 2008.

  • Кроме того, образцы находятся на жестком диске компьютера. По умолчанию образцы кода и файл Readme копируются в папку, находящуюся в папке \Program Files\Visual Studio 9.0\Samples\. Все образцы кода для экспресс-выпусков Visual Studio находятся в Интернете.

Построение и запуск образца

Построение и запуск образца VIEWEX

  1. Откройте решение viewex.sln.

  2. В меню Построение выберите команду Построить.

  3. В меню Отладка выберите пункт Запуск без отладки.

Во время первого запуска приложения VIEWEX в нем представлено диалоговое окно New, где можно выбрать тип демонстрируемого окна документа.

  • Вариант Simple Text отображает строку текущего цвета, расположенную по центру окна.

  • Вариант Input Form View предоставляет форму (CFormView), в которой можно изменить строку в элементе управления "Поле ввода" и изменить цвет, выбрав его в переключателе.

  • В варианте Splitter Frame выводятся окна Simple Text и Input Form в виде двух параллельных областей окна-разделителя. Когда изменяется строка (посимвольно) или цвет в окне Input Form, эти изменения автоматически отражаются в представлении Simple Text.

  • Вариант Three-way Splitter Frame отображает представление Input Form в одной области окна-разделителя. Другая область разделяется на две части строкой-разделителем. Верхняя часть содержит представление Simple Text, а нижняя — представление Color. Представление Color просто целиком закрашивается текущим цветом.

Можно изменить строку с помощью элемента управления "Поле ввода" в представлении Input Form или выбрав пункт Change Data в меню Edit.

Также можно просматривать несколько документов одновременно. Однако в целях упрощения не поддерживается возможность сохранения и повторного открытия документов, а также будет невозможно одновременно просматривать один документ в нескольких окнах, описанных выше.

Статическое окно-разделитель

В образце VIEWEX дочернее окно интерфейса MDI создает окно-разделитель "1 на 2" в клиентской области, переопределяя метод OnCreateClient. В случае разделения на три области в образце VIEWEX создается второй разделитель "2 на 1" в правой части окна-разделителя "1 на 2".

VIEWEX вызывает метод CSplitterWnd::CreateStatic вместо метода CSplitterWnd::Create, чтобы создавать статические, а не динамические окна-разделители. Каждая область окна-разделителя VIEWEX имеет собственный класс представления. VIEWEX вызывает метод CSplitterWnd::CreateView, чтобы указать класс, производный от CView, для каждой области. Для первой области VIEWEX использует класс представления, относящийся к объекту шаблона документа, который передается в метод OnCreateClient в элементе m_pNewViewClass класса CCreateContext. Для других областей VIEWEX указывает RUNTIME_CLASS для представления.

Представление формы

В классе CInputView показана синхронизация представления формы с другими представлениями так, что когда пользователь вводит данные в одно из полей, это изменение немедленно отражается в других представлениях. Это выполняется в CInputView путем сопоставления ON_EN_CHANGE и ON_BN_CLICKED для всех элементов управления с центральным обработчиком сообщений OnDataChange. Метод OnDataChange вызывает метод CView::UpdateData для передачи данных с экрана в переменные-члены класса CInputView, а затем вызывает метод UpdateAllViews документа, чтобы сообщить другим представлениям об изменении.

Обмен данными диалоговых окон (DDX)

В классе CInputView приложения VIEWEX показан механизм обмена данными диалоговых окон (DDX) на примере данных переключателя. Обратите внимание, что в файле Iputvw.h только первая кнопка переключателя сопоставлена с переменной m_iColor в классе CInputView::DoDataExchange. Переменная m_iColor имеет отсчитываемое от нуля порядковое значение (int), представляющее выбранную кнопку переключателя.

Ключевые слова

В этом образце показаны следующие ключевые слова:

CDC::FillRect; CDialog::DoModal; CDocument::OnNewDocument; CDocument::UpdateAllViews; CFrameWnd::LoadFrame; CFrameWnd::OnCreateClient; CFrameWnd::SetActiveView; CObject::Serialize; CRect::Height; CRect::Width; CSplitterWnd::CreateStatic; CSplitterWnd::CreateView; CSplitterWnd::GetPane; CSplitterWnd::IdFromRowCol; CString::GetLength; CView::GetDocument; CView::OnActivateView; CView::OnDraw; CView::OnUpdate; CWinApp::AddDocTemplate; CWinApp::InitInstance; CWinApp::OnFileNew; CWnd::DoDataExchange; CWnd::GetClientRect; CWnd::OnMouseActivate; CWnd::ShowWindow; CWnd::UpdateData; CWnd::UpdateWindow; RGB; SetBkMode; SetTextAlign; SetTextColor; TextOut; max

1d7781f1.alert_note(ru-ru,VS.90).gifПримечание.

Некоторые образцы, включая данный, не модифицировались с учетом изменений в мастерах, библиотеках и компиляторе Visual C++, однако по-прежнему демонстрируют выполнение требуемой задачи.

См. также

Другие ресурсы

Примеры MFC