|
Программирование >> Процедурные приложения
Рис. 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(), управляющих вызовом упоминавшихся ранее методов
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |