Элементы управления ActiveX в MFC. Добавление пользовательских методов
Пользовательские методы отличаются от стандартных методов, так как они еще не реализованы COleControl. Необходимо указать реализацию для каждого пользовательского метода добавляется к элементу управления.
Пользователь элемент управления ActiveX может вызывать пользовательский метод в любое время для выполнения действий для отдельного элемента управления. Запись схемы подготовки к сообщению для пользовательских методов формы DISP_FUNCTION.
Чтобы добавить пользовательский метод с помощью мастера добавления метода.
В следующей процедуре показано добавление пользовательского PtInCircle метод в код элемента управления ActiveX каркасному. Определяет, является ли PtInCircle координаты, заданных в элемент управления внутри или вне круга. Эту одной процедуры можно также использовать для добавления дополнительных пользовательские методы. Замените имя пользовательского метода и его параметры имени и параметров метода PtInCircle.
Примечание
В данном примере функция InCircle из событий статьи.Дополнительные сведения об этой функции см. в разделе Элементы управления ActiveX MFC. Добавление пользовательских событий к элементу управления ActiveX статьи.
Чтобы добавить пользовательский метод PtInCircle с помощью мастера добавления метода.
Загрузите проект элемента управления.
В представлении классов разверните узел библиотеки элемента управления.
Щелкните правой кнопкой мыши узел интерфейса для элемента управления (второго узла узла библиотеки), чтобы открыть контекстное меню.
В контекстном меню щелкните Добавить, а затем щелкните Добавить метод.
Это будет открыт мастер добавления метода.
В поле Имя метода введите PtInCircle.
В поле Внутреннее имя введите имя функции метода внутренней или примите значение по умолчанию (в данном случае PtInCircle).
В поле Возвращаемый тип, щелкните VARIANT_BOOL для возвращаемого типа метода.
Использование элементов управления Тип параметра и Имя параметра добавьте параметр с именем xCoord (типом OLE_XPOS_PIXELS).
Использование элементов управления Тип параметра и Имя параметра добавьте параметр с именем yCoord (типом OLE_YPOS_PIXELS).
Нажмите кнопку Готово.
Добавьте мастера изменения метода для пользовательских методов
При добавлении пользовательского метода, мастера добавления метода выполняет некоторые изменения в качестве заголовка класса элемента управления (. H) и файлы реализации (CPP). В следующей линия добавляется к объявлению схемы подготовки к отправке в заголовке (класса элемента управления. Файл H).
VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
Этот код объявляет метод PtInCircle диспетчеризации вызывается обработчиком. Эта функция может быть вызвана пользователем элемента управления с помощью внешнего имени PtInCircle.
В следующей линия добавляется в файл .IDL элемента управления:
[id(1), helpstring("method PtInCircle")] VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
Эта линия присвоить метод PtInCircle определенный идентификатор, позиция метода в методах мастера добавления метода и свойства перечислены. Поскольку мастера добавления метода использовался для добавления пользовательский метод, запись для ее была добавлена .IDL автоматически в файл проекта.
Кроме того, следующая линия, расположенная в файле реализации (CPP) класса элемента управления, добавляется в схеме подготовки к отправке элемента управления:
DISP_FUNCTION_ID(CMyAxUICtrl, "PtInCircle", dispidPtInCircle, PtInCircle, VT_BOOL, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)
Макрос DISP_FUNCTION сопоставляет метод PtInCircle функции обработчика элемента управления, PtInCircle, следует объявить тип возвращаемого значения, возвратят значение VARIANT_BOOL, и объявляет 2 параметров типа VTS_XPOS_PIXELS и VTS_YPOSPIXELS, передаваемые PtInCircle.
Наконец, мастера добавления метода функциональность CSampleCtrl::PtInCircle заглушки в конце файла реализации элемента управления (CPP). Для PtInCircle к функции, как показано выше, его необходимо изменить следующим образом:
VARIANT_BOOL CMyAxUICtrl::PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CPoint point(xCoord, yCoord);
return InCircle(point);
}
См. также
Ссылки
Значки представления классов и обозревателя объектов