Шаг 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 Кб).
   
Со следующего шага мы начнем знакомиться с созданием приложений для Интернета.
Предыдущий шаг 
 
Содержание 
 
Следующий шаг