Поделиться через


Элементы управления ActiveX в MFC. Добавление пользовательских методов

Пользовательские методы отличаются от стандартных методов, так как они еще не реализованы COleControl. Необходимо указать реализацию для каждого пользовательского метода добавляется к элементу управления.

Пользователь элемент управления ActiveX может вызывать пользовательский метод в любое время для выполнения действий для отдельного элемента управления. Запись схемы подготовки к сообщению для пользовательских методов формы DISP_FUNCTION.

Чтобы добавить пользовательский метод с помощью мастера добавления метода.

В следующей процедуре показано добавление пользовательского PtInCircle метод в код элемента управления ActiveX каркасному. Определяет, является ли PtInCircle координаты, заданных в элемент управления внутри или вне круга. Эту одной процедуры можно также использовать для добавления дополнительных пользовательские методы. Замените имя пользовательского метода и его параметры имени и параметров метода PtInCircle.

Примечание

В данном примере функция InCircle из событий статьи.Дополнительные сведения об этой функции см. в разделе Элементы управления ActiveX MFC. Добавление пользовательских событий к элементу управления ActiveX статьи.

Чтобы добавить пользовательский метод PtInCircle с помощью мастера добавления метода.

  1. Загрузите проект элемента управления.

  2. В представлении классов разверните узел библиотеки элемента управления.

  3. Щелкните правой кнопкой мыши узел интерфейса для элемента управления (второго узла узла библиотеки), чтобы открыть контекстное меню.

  4. В контекстном меню щелкните Добавить, а затем щелкните Добавить метод.

    Это будет открыт мастер добавления метода.

  5. В поле Имя метода введите PtInCircle.

  6. В поле Внутреннее имя введите имя функции метода внутренней или примите значение по умолчанию (в данном случае PtInCircle).

  7. В поле Возвращаемый тип, щелкните VARIANT_BOOL для возвращаемого типа метода.

  8. Использование элементов управления Тип параметра и Имя параметра добавьте параметр с именем xCoord (типом OLE_XPOS_PIXELS).

  9. Использование элементов управления Тип параметра и Имя параметра добавьте параметр с именем yCoord (типом OLE_YPOS_PIXELS).

  10. Нажмите кнопку Готово.

Добавьте мастера изменения метода для пользовательских методов

При добавлении пользовательского метода, мастера добавления метода выполняет некоторые изменения в качестве заголовка класса элемента управления (. 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);
}

См. также

Ссылки

Значки представления классов и обозревателя объектов

Основные понятия

Элементы управления ActiveX MFC