Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Пользовательские методы отличаются от стандартных методов тем, что они не реализованы COleControl. Необходимо предоставить реализацию для каждого настраиваемого метода, добавляемого в элемент управления.
Это важно
ActiveX — это устаревшая технология, которая не должна использоваться для новой разработки. Дополнительные сведения о современных технологиях, заменяющих ActiveX, см. в разделе ActiveX Controls.
Пользователь элемента управления ActiveX может вызывать настраиваемый метод в любое время для выполнения действий, относящихся к элементу управления. Запись карты отправки для пользовательских методов имеет форму DISP_FUNCTION.
Добавление пользовательского метода с помощью мастера добавления методов
В данной процедуре демонстрируется добавление пользовательского метода PtInCircle в структуру кода ActiveX управления. PtInCircle определяет, находятся ли координаты, передаваемые элементу управления, внутри или за пределами круга. Эту же процедуру также можно использовать для добавления других пользовательских методов. Замените имя пользовательского метода и его параметры именем и параметрами метода PtInCircle.
Замечание
В этом примере используется InCircle функция из статьи Events. Дополнительные сведения об этой функции см. в статье mFC ActiveX Controls: добавление настраиваемых событий в элемент 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 и объявляет два параметра типа 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);
}
См. также
Элементы управления ActiveX MFC
Значки представления классов и обозревателя объектов