Программирование >>  Процедурные приложения 

1 ... 143 144 145 [ 146 ] 147 148 149 150



Рис. 23.7. На вкладке Stock Properties выбираются базовые свойства, подддерживаемые элементом управления

В окне контейнера в меню Edit выберите команду InsertNewControl, в открывшемся диалоговом окне InsertControl найдите класс PolyCtl, после чего нажмите кнопку ОК.

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

Модификация шаблона

Далее необходимо внести некоторые изменения в сгенерированный мастером ATLCOMAppWizard шаблон проекта Polygon.

Добавление свойства

Свойства элемента управления реализуются посредством интерфейса iPolyCtl. Чтобы добавить новое свойство, в окне компилятора VisualC++ перейдите на вкладку ClassView, выберите интерфейс IPolyCtl и щелкните правой кнопкой мыши, после чего в открывшемся

контекстном меню выберите команду AddProperty.... На экране появится диалоговое окно

AddPropertytoInterface(рис. 23.9).




Рис. 23.9. В окне Add to Property to Interface можно добавить к элементу управления новое свойство

Из списка PropertyType выберите тип данных short, затем в поле PropertyName введите имя свойства Sides и щелкните на кнопке ОК. Компилятор MIDL(программа, которая создает файлы с расширением IDL) сгенерирует методы get Sides()и put sides(),управляющие получением и установкой значения данного свойства. Прототипы этих функций добавляются в файл POLYCTL.H, а их базовые реализации - в файл POLYCTL.CPP. Мы к ним еще вернемся.

Реализация точек подключения

Для нашего проекта также необходим интерфейс точек подключения (connectionpoints), формирующий канал передачи сообщений между элементом управления и его контейнером. СОМ-объект может иметь несколько точек подключения и, кроме того, должен реализовывать интерфейс контейнера точек подключения - iConnectionPointContainer.

Прежде всего нам нужно добавить к интерфейсу диспетчеризации событий IPolyCtlEventsдва метода - clickin() и ClickOut(), которые сигнализируют о том, что щелчок мышью выполнен соответственно внутри и вне многоугольника, рисуемого в элементе управления. Перейдите на вкладку ClassView, щелкните правой кнопкой мыши на элементе IPolyCtlEventsи выберите из контекстного меню команду AddMethod. В открывшемся диалоговом окне AddMethodtoInterface в списке ReturnType укажите тип возвращаемого значения void, в поле MethodName введите имя метода Clickin, а в поле Parameters задайте описание входных параметров х и у, как показано на рис. 23.10. Повторите эту процедуру для метода ClickOut.

Строки с описанием данных методов будут добавлены в файл POLYGON. IDL- библиотеку типов элемента управления. Прежде чем переходить к следующему шагу, скомпилируйте библиотеку типов, щелкнув на имени указанного файла на вкладке FileView и выбрав в контекстном меню команду CompilePOLYGON.IDL.

Далее на вкладке ClassViewщелкните правой кнопкой мыши на элементе CPolyCtl и выберите из контекстного меню команду ImplementConnectionPoint. В открывшемся одноименном диалоговом окне (рис. 23.11) должна содержаться единственная вкладка POLYGONLib(это название библиотеки типов элемента управления). В списке Interfaces перечисляются интерфейсы диспетчеризации, описанные в данной библиотеке. В нашем случае такой



интерфейс один: lPolyCtlEvents. В поле Filename указано имя файла (POLYGONCP.H), в который будет помещен специальный код, управляющий транспортировкой сообщений между элементом управления и контейнером. Поставьте метку напротив интерфейса IPolyCtlEventsи нажмите кнопку ОК


Рис. 23.10. Окно Add Method to Interface


Рис. 23.11. Окно Implement Connection Point

В результате выполненных действий будет создан файл POLYGONCP.H, содержащий реализацию класса CProxy iPolyCtlEvents, потомка класса iConnectionPointlmpl, и двух его методов, Fire ClickIn() и Fire ClickOut(), управляющих вызовом упоминавшихся ранее методов



1 ... 143 144 145 [ 146 ] 147 148 149 150

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика