Прогрессивные технологии программирования. Технология ActiveX, страница 2

-  Установить переключатель Вставить (Paste), а для связывания объектов имеется переключатель Связать (Paste Link).

-  Выбрать из списка источник и нажать ОК.

Существует еще способ внедрения части документа в другой документ – это технология “перетащить и отпустить”.

10.2. Создание приложения-контейнера

Цель работы - создание приложения в виде контейнера ActiveX. В качестве задачи возьмем приложение lab3_2 из п. 8.2, посвященное созданию диалогового окна с кнопкой и текстовым полем. Внесем некоторые изменения.

Алгоритм работы приложения Contain - следующий:

- Щелкнуть на включенной заранее в меню новой команде Dialog. Появляется диалоговое окно со стандартными кнопками OK и Cancel, с добавленной кнопкой с именем Output и добавленным пустым текстовым полем.

- Щелкнуть на кнопке Output. В текстовом поле появляется строка “Диалоговое окно”.

-  Щелкнуть на кнопке OK. Диалоговое окно исчезает, появляется главное окно приложения, в котором выводится содержимое текстового поля “Диалоговое окно”.

Для создания приложения–контейнера ActiveX необходимо выполнить следующие действия:

1.  Создать новый проект Contain, изменив некоторые установки этапов настройки AppWizard в п. 8.2 (lab3_2): задать имя проекта Contain, на 1-ом этапе выбрать MDI-приложение, на 3-ем этапе выбрать Container, остальные – без изменений по умолчанию.

2.  Сравнить меню нового приложения Contain с приложением lab3_2:

- Перейти на вкладку Contain resources и открыть папку Menu. Появилось новое меню IDR_CONTAINTYPE_CNTR_IP (CNTR – это согласные от слова container, IP – (in place) редактирование на месте). Это означает, что объект, содержащийся в контейнере, может быть отредактирован на месте. Для редактирования объединяются меню контейнера и сервера.

- Щелкнуть дважды на этом меню. Появляется окно с командами нового меню. Это окно будет выводиться во время редактирования объекта на месте, т.е. в окне контейнера.

- Щелкнуть дважды на меню IDR_CONTAINTYPE. Выводится окно с командами меню. Открыть меню Edit. Появились новые 4 команды: Paste Special – пересылка объекта в контейнер из буфера обмена Clipboard; Insert New Object – помещение объекта в контейнер с помощью диалогового окна Insert Object; Links – определение метода обновления связанного объекта с помощью диалогового окна Links; <<OLE VERBS GO HERE>> - вывод в меню Edit всплывающего меню с командами, специфичными для выбранного типа объекта.

3  Выполнить с приложением Contain операции, аналогичные операциям приложения lab3_2 из п. 8.2:

- Включение новой команды Dialog в меню. Отличие от lab3_2 – надо включить команду не в меню File , а в меню заготовки приложения IDR_CONTAINTYPE (открыть это меню в окне Contain resources) между пунктами View и Windows.

Вызов редактора меню. Перейти на вкладку ResourseView и открыть папку Contain resourses. Открыть папку Menu. Появится строки трех меню. Дважды щелкнуть на строке IDR_CONTAINTYPE. Выводятся команды главного меню.

Добавление новой команды Dialog. Новая команда должна быть между View и Windows. Щелкнуть на Windows и нажать клавишу Ins. Появится пустая команда. Дважды щелкнуть на новой пустой команде. Откроется диалоговое окно Menu Item Properties. Занести в поле Caption строку Dialog и закрыть окно, а затем и редактор меню.

Подключение кнопки меню к приложению. Запустить Class-Wizard (View->ClassWizard). Проверить вкладку Message Maps и в списке Class Name имя CContainView. Выделить идентификатор команды ID_Dialog. В списке Message дважды щелкнуть на строке Сommand. В списке Member function появится функция - обработчик OnDialog(). Дважды щелкнуть на строке OnDialog. В окне появится код функции.

-  Создание диалогового окна.

-  Добавление элементов управления в диалоговое окно.

-  Изменение надписей элементов управления.

-  Создание класса диалогового окна.

-  Связывание элементов диалогового окна с функциями класса.

-  Связывание переменных с элементами диалогового окна.

-  Переопределение функций для кнопки OK.

-  Отображение диалогового окна.

4  Скомпилировать приложение и запустить его на выполнение. Проверить алгоритм работы приложения-контейнера ActiveX: работу диалогового окна с кнопкой и текстовым полем с выводом строки.

5  Вставить в контейнер диаграмму Excel. Для этого выполнить следующие действия:

-  Запустить приложение Cont.

-  Выбрать команду Edit->Insert New Object. Появится диалоговое окно для внедрения или связывания объектов.

-  Выбрать новый объект Диаграмма Microsoft Excel и нажать OK. Диаграмма будет вставлена в контейнер.

-  Для отмены редактирования на месте нажать Esc. Диаграмма уменьшится и сдвинется влево. Все объекты помещаются в прямоугольник 200x200 пикселей.

10.3. Создание приложения-сервера

Цель работы - создание приложения в виде сервера ActiveX. В качестве задачи возьмем приложение Contain из п. 10.2, посвященное созданию диалогового окна с кнопкой и текстовым полем. Внесем некоторые изменения.

Для создания приложения–сервера ActiveX необходимо выпол-нить следующие действия:

1   Создать новый проект Serv1 , изменив некоторые установки этапов настройки AppWizard : задать имя проекта Serv1, на 1-ом этапе выбрать MDI-приложение, на 3-ем этапе выбрать Full-server, остальные – без изменений по умолчанию.

2   Сравнить меню нового приложения Serv1 с приложением lab3_2:

- Перейти на вкладку Serv1 resources и открыть папку Menu. Появились 2 новых меню. Первое меню IDR_SERV1TYPE_SRVR_IP (SRVR – это согласные от слова server, IP – (in place) редактирование на месте). Это означает, что объект, содержащийся в контейнере, может быть отредактирован на месте. Для редактирования объединяются меню контейнера (например, из п.10.2 IDR_CONTAINTYPE _CNTR_IP) и первое меню сервера. Второе меню IDR_SERV1TYPE_ SRVR_EMB (EMB – (embedded) встроенный) используется для редактирования в отдельном окне сервера.

- Щелкнуть дважды на втором меню. Появляется окно с командами нового меню. Это окно будет выводиться во время редактирования объекта в отдельном окне, т.е. в окне сервера. Открыть меню File. Появились новые 2 команды : Update вместо Save – модификация объекта; Save Copy As вместо Save As – копирование изменений объекта в файл, а не сохранение всего документа. Объект считается не самостоятельным документом, а объектом, внедренным в другой документ.

3  Выполнить с приложением Serv1 операции, аналогичные операциям приложения lab3_2 из п. 8.2:

-  Включение новой команды Dialog.

-  Создание диалогового окна.

-  Добавление элементов управления в диалоговое окно.

-  Изменение надписей элементов управления.

-  Создание класса диалогового окна.

-  Связывание элементов диалогового окна с функциями класса.

-  Связывание переменных с элементами диалогового окна.

-  Переопределение функций для кнопки OK.

-  Отображение диалогового окна. В приложении имеются две функции OnDraw(): функция CServ1View::OnDraw() выводит объект на экран при редактировании на месте и при автономном приложении Serv1; функция CServ1SrvrItem::OnDraw() выводит на экран неактивный объект.

4  Скомпилировать приложение и запустить его на выполнение. Проверить алгоритм работы приложения-сервера ActiveX: работу диалогового окна с кнопкой и текстовым полем с выводом строки.

5  Вставить в контейнер Contain (п. 10.2) сервер (п. 10.3). Для этого выполнить следующие действия:

-  Запустить приложение Contain.

-  Выбрать команду Edit->Insert New Object. Появится диалоговое окно для внедрения или связывания объектов.

-  Выбрать новый объект Serv1 и нажать OK. Сервер будет вставлен в контейнер. Проверить работу диалогового окна Dialog.

-  Для отмены редактирования на месте нажать Esc. Объект уменьшится и сдвинется влево. Все объекты помещаются в прямоугольник 200x200 пикселей.