Шаг 217.
Среда программирования Visual C++.
Использование ActiveX-элемента в приложении
На этом шаге мы рассмотрим пример использования элемента управления в приложении.
В шагах 141-144 демонстрировалось, как приложение STUpload применяет два
ActiveX-элемента, Microsoft ADO Data Control и Microsoft DataGrid Control, в качестве составных
частей пользовательского интерфейса. Мы не будем добавлять в приложение STUpload никаких новых
ActiveX-элементов. Вместо этого мы научимся использовать созданный в предыдущих шагах элемент управления
OneArmedBandit как часть Windows-приложения. Это приложение мы назовем VirtualSlot.
Приложение вызывает предоставляемый OneArmedBandit метод Рlау() и обрабатывает событие Jackpot.
В процессе создания приложения мы обратимся к странице свойств для задания числа отображаемых картинок и цветов элемента управления.
Если Вы не создали этот элемент ранее, то можете воспользоваться исходным текстом элемента управления OneArmedBandit.
Зарегистрируйте его на своей машине следующим образом.
- Скопируйте файл OneArmedBandit.ocx в подходящий каталог на жестком диске.
- Выйдите в командную строку и перейдите в каталог с файлом OneArmedBandit.ocx.
- Введите следующую команду, чтобы зарегистрировать элемент управления на своем компьютере:
regsvr32 onearmedbandit.ocx
Теперь переходим к созданию приложения VirtualSlot.
- Создание проекта VirtualSlot.
- В Visual C++ в меню File выберите команду New.
- Выберите MFC AppWizard (exe) и создайте новый проект с именем VirtualSlot. Щелкните ОК.
- В окне 1 AppWizard выберите Dialog Based и затем щелкните Finish.
- Щелкните OK, чтобы завершить создание проекта.
В редакторе диалогов появится шаблон диалога IDD_VIRTUALSLOT_DIALOG. На его основе мы сформируем
интерфейс приложения VirtualSlot, состоящего из одного элемента управления OnArmedBandit и
кнопок Play и Close.
- Модификация шаблона диалога IDD_VIRTUALSLOT_DIALOG.
- Удалите строку с комментарием // TODO.
- Измените заголовок кнопки ОК на Close. Назначите кнопке Cancel новый идентификатор
ID_PLAY и измените ее заголовок на Play.
- Переставьте кнопки в соответствии с рисунком 1.
Рис.1. Внешний вид приложения
- Добавление в проект элемента управления OneArmedBandit.
- В меню Project выберите команду Add to Project и затем щелкните Components and Controls.
- В Components and Controls Gallery дважды щелкните папку Registered ActiveX Controls, чтобы
отобразить все зарегистрированные на Вашей системе ActiveX-элементы.
- Щелкните OneArmedBandit и затем - Insert.
Рис.2. Добавление элемента OneArmedBandit
- Щелкните ОК, чтобы вставить компонент. Снова щелкните ОК,
подтверждая создание класса элемента управления COneArmedBandit.
- Щелкните Close, чтобы закрыть Components and Controls Gallery.
Обратите внимание, что в панели инструментов Controls появился стандартный ОСХ-значок для
элемента управления OneArmedBandit.
Рис.3. Значок ОСХ
В MFC-проекте OneArmedBandit, есть битовая карта IDB_ONEARMEDBANDIT. Вы можете
отредактировать ее, чтобы создать кнопку для панели инструментов.
В ClassView появится класс COneArmedBandit, сгенерированный Components and Controls Gallery. Он содержит
функции-оболочки, предоставляющие доступ к свойствам и методам элемента управления. Функция Create() позволяет
динамически создавать экземпляр элемента управления (например, в объекте CView).
- Размещение элемента управления COneArmedBandit.
- Щелкните кнопку OneArmedBandit на панели инструментов Controls и поместите элемент управления в диалоговое окно.
Измените размеры элемента и диалогового окна так, чтобы они выглядели так, как показано на рисунке 4.
Рис.4. Размещение элемента управления
- Выбрав элемент управления OneArmedBandit, нажмите ENTER, чтобы отредактировать его свойства.
Наряду со страницами свойств General и All, реализованными контейнером, появятся уже знакомые страницы.
Рис.5. Окно свойств элемента управления
- На странице General измените идентификатор элемента управления на IDC_ONEARMEDBANDIT1.
- На странице Control задайте в Number of Symbols значение 7.
- На странице Colors выберите цвета ForeColor и BackColor.
Сейчас в диалоговом классе CVirtualSlotDlg мы реализуем кнопку Play и обработку события Jackpot.
- Реализация кнопки Play.
- Нажмите CTRL+W, чтобы открыть ClassWizard. На вкладке Member Variables щелкните
идентификатор элемента управления IDC_ONEARMEDBANDIT1. Нажмите Add Variable, чтобы создать
в нем переменную-член m_bandit типа COneArmedBandit.
Рис.6. Создание переменной m_bandit
- На странице Message Maps щелкните идентификатор объекта ID_PLAY. Создайте обработчик
сообщения BN_CLICKED с именем ОnРlау().
Рис.7. Создание обработчика
- Щелкните Edit Code и измените тело функции ОnРlау(), заменив строку с комментарием
// TODO следующим текстом:
- Обработка события Jackpot.
- На вкладке Message Maps ClassWizard щелкните идентификатор элемента управления
IDC_ONEARMEDBANDIT1.
- Щелкните сообщение Jackpot и затем - Add Function, чтобы создать функцию
OnJackpotOnearmedbandit1().
Рис.8. Создание функции OnJackpotOnearmedbandit1()
- Щелкните Edit Code и измените тело функции OnJackpotOnearmedbandit1(), заменив строку с
комментарием // TODO следующим текстом:
AfxMessageBox("Jackpot!");
- Теперь Вы можете собрать и запустить приложение VirtualSlot. Щелкните кнопку Play, чтобы
сыграть в "однорукого бандита". Продолжайте игру, пока не выпадет джекпот.
Рис.9. Результат работы приложения
Текст приложения можно взять здесь (30,2 Кб).
Со следующего шага мы начнем знакомиться с созданием приложений для Интернета.
Предыдущий шаг
Содержание
Следующий шаг