Паппас К., Мюррей У. - Visual C++ 6. Руководство разработчика - 2000
.pdfРис. 22.14. После щелчка мыши на элементе управления в нем отображаются время и дата
Теперь наведите указатель мыши на элемент управления и щелкните левой кнопкой мыши, в результате чего желтый цвет прямоугольной области будет заменен серым и в ней отобразятся текущие значения времени и даты (рис. 22.14).
433
Рис. 23.2. Окно мастера ATL-проекта
В группе опций ServerType установите переключатель DynamicLinkLibrary (DLL) и щелкните на кнопке Finish. Откроется окно NewProjectInformation с итоговой информацией о создаваемом ATL-проекте (рис. 23.3).
435
Рис. 23.3. Диалоговое окно New Project Information
Щелкните на кнопке ОК, чтобы запустить процесс генерирования кода программы.
Пока что мастер создал лишь оболочку проекта, в которую необходимо добавить один или несколько элементов управления. Это можно сделать с помощью мастера ATL-объектов, который вызывается по команде NewATLObject... из меню Insert(рис. 23.4).
Рис. 23.4. Мастер ATL Object Wizard позволяет добавлять в ATL-проект различные элементы управления
В окне мастера в списке Category выберите элемент Controls, затем в списке Objects— элемент FullControl и щелкните на кнопке Next. В открывшемся диалоговом окне вам представится возможность задать различные параметры конфигурации создаваемого
436
Рис. 23.7. На вкладке Stock Properties выбираются базовые свойства, подддерживаемые элементом управления
В окне контейнера в меню Edit выберите команду InsertNewControl, в открывшемся диалоговом окне InsertControl найдите класс PolyCtl, после чего нажмите кнопку ОК.
Этот элемент управления не будет выполнять никаких функций до тех пор, пока мы не свяжем с ним различные свойства и события.
Модификация шаблона
Далее необходимо внести некоторые изменения в сгенерированный мастером
ATLCOMAppWizard шаблон проекта Polygon.
Добавление свойства
Свойства элемента управления реализуются посредством интерфейса iPolyCtl. Чтобы добавить новое свойство, в окне компилятора VisualC++ перейдите на вкладку ClassView, выберите интерфейс IPolyCtl и щелкните правой кнопкой мыши, после чего в открывшемся контекстном меню выберите команду AddProperty.... На экране появится диалоговое окно
AddPropertytoInterface(рис. 23.9).
438
Рис. 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 перечисляются интерфейсы диспетчеризации, описанные в данной библиотеке. В нашем случае такой
439
- #13.08.201334.52 Mб91Липман С., Лажойе Ж., Му Б. - Язык программирования C++. Вводный курс - 2007.djvu
- #13.08.201347.18 Mб128Литвиненко Н.А. - Технология программирования на C++. Win32 API-приложения - 2010.djvu
- #
- #
- #13.08.201317.53 Mб104Оберг Р., Торстейсон П. - Архитектура .NET и программирование на Visual C++ - 2002.pdf
- #
- #
- #
- #
- #
- #