Метод IVisEventProc. Висевентпрок (Visio)IVisEventProc.VisEventProc method (Visio)

Частная функция члена IVisEventProc , которая обрабатывает уведомления о событиях, переданные ему методом EventList. аддадвисе .Private member function of IVisEventProc that handles event notifications passed to it by the EventList.AddAdvise method.

СинтаксисSyntax

выражение.expression. VisEventProc( _nEventCode_ , _pSourceObj_ , _nEventID_ , _nEventSeqNum_ , _pSubjectObj_ , _vMoreInfo_ )

Expression (выражение ) Переменная, представляющая объект IVisEventProc .expression A variable that represents an IVisEventProc object.

ПараметрыParameters

ИмяName Обязательный или необязательныйRequired/Optional Тип данныхData type ОписаниеDescription
НевенткодеnEventCode ОбязательныйRequired IntegerInteger Произошедшие события.The event or events that occurred.
ПсаурцеобжpSourceObj ОбязательныйRequired ObjectObject Объект, коллекция EventList которого содержит объект события , который отправил уведомление.The object whose EventList collection contains the Event object that sent the notification.
НевентидnEventID ОбязательныйRequired LongLong Уникальный идентификатор объекта event в коллекции EventList .The unique identifier of the Event object within the EventList collection.
НевентсекнумnEventSeqNum ОбязательныйRequired LongLong Порядковый номер события относительно последовательности событий, произошедших в вызывающем экземпляре приложения.The ordinal position of the event with respect to the sequence of events that have occurred in the calling instance of the application.
ПсубжектобжpSubjectObj ОбязательныйRequired ObjectObject Тема события, представляющее собой объект, в котором произошло событие.The subject of the event, which is the object to which the event occurred. Примеры приведены в разделе Примечания.See Remarks for examples.
ВмореинфоvMoreInfo ОбязательноRequired VariantVariant Дополнительные сведения о теме события.Additional information about the subject of the event. Дополнительные сведения см.See Remarks for more information.

Возвращаемое значениеReturn value

VariantVariant

ПримечанияRemarks

Чтобы обработать уведомления о событиях, создайте модуль класса, который реализует интерфейс IVisEventProc , а затем создайте экземпляр этого класса, который передается в качестве аргумента методу аддадвисе коллекции EventList .To handle event notifications, create a class module that implements the IVisEventProc interface and then create an instance of this class to pass as an argument to the AddAdvise method of the EventList collection. Используйте метод аддадвисе , чтобы создать объекты событий , которые отправляют уведомления.Use the AddAdvise method to create Event objects that send the notifications.

Параметр невенткоде указывает конкретное событие или события, которые произошли.The nEventCode parameter identifies the specific event or events that occurred. Аргумент евенткоде метода аддадвисе передается в висевентпрок как невенткоде.The EventCode argument of the AddAdvise method is passed to VisEventProc as nEventCode. В процедуре можно использовать любой способ ветвления, который определяет, какое событие произошло и его обрабатывает.Within your procedure, you can use any branching technique you want to determine which event occurred and handle it. В примере, прилагаемом к этой статье, используется структура критериев Select Case .The example that accompanies this topic uses a Select Case decision structure.

В отличие от свойства index коллекции EventList , невентид не изменяется, так как объекты событий добавляются в коллекцию или удаляются из нее.Unlike the Index property of the EventList collection, nEventID does not change as Event objects are added or deleted from the collection.

В висевентпрокможно использовать следующий код, чтобы получить объект события , который отправил уведомление:From within VisEventProc, you can use the following code to get the Event object that sent the notification:

pSourceObj. EventList.ItemFromID(nEventID )

Соединение между исходным объектом псаурцеобж и объектом Event существует до тех пор, пока не произойдет одно из следующих событий :The connection between the source object pSourceObj and the Event object exists until one of the following occurs:

  • Программа удаляет объект event .The program deletes the Event object.

  • Программа освобождает последнюю ссылку на исходный объект.The program releases the last reference to the source object. (Коллекция EventList и объекты событий содержат ссылку на исходный объект.)(The EventList collection and Event objects hold a reference to their source object.)

  • Экземпляр приложения Microsoft Visio завершается.The Microsoft Visio application instance terminates.

Первое событие, возникающее в экземпляре Visio, имеет невентсекнум = 1, второе событие = 2 и т. д.The first event that occurs in a Visio instance has nEventSeqNum = 1, the second event = 2, and so on. В некоторых случаях можно использовать порядковый номер в сочетании со свойством EventInfo , чтобы получить дополнительные сведения о событии.In some cases, you can use the sequence number in conjunction with the EventInfo property to obtain more information about the event.

Параметр псубжектобж для события шапеаддед — это объект Shape , представляющий только что добавленную фигуру, а тема события бефореселектионделете — это объект Selection , в котором фигуры удаляемые сведения будут выбраны.The pSubjectObj parameter for a ShapeAdded event is a Shape object that represents the shape that was just added, while the subject of a BeforeSelectionDelete event is a Selection object in which the shapes that are about to be deleted are selected.

Для многих событий вмореинфо — это строка, похожая на командную строку, которую приложение передает на надстройки, которые она выполняет.For many events, vMoreInfo is a string similar to the command line the application passes to the add-ons it executes. Если уведомление не включает дополнительные сведения, этот параметр имеет значение Nothing.If the notification does not include additional information, this parameter is set to Nothing. Дополнительные сведения о параметрах уведомлений для определенного события можно найти в разделе, посвященном событиям, в этой справочнике по автоматизации.For details about notification parameters for a particular event, see the particular event topic in this Automation Reference.

Начиная с Visio 2000, висевентпрок определяется как функция, возвращающая значение.Beginning with Visio 2000, VisEventProc is defined as a function that returns a value. Однако в Visio отображаются только возвращаемые значения из вызовов висевентпрок , которые передаются по коду события запроса.However, Visio only looks at return values from calls to VisEventProc that are passed a query event code. Объекты Sink, обеспечивающие висевентпрок через IDispatch , не требуют изменений.Sink objects that provide VisEventProc through IDispatch require no change. Чтобы изменить существующие обработчики событий, чтобы они могли обрабатывать события запросов, замените процедуру Sub на процедуру Function и возвратите соответствующее значение.To modify existing event handlers so that they can handle query events, change the Sub procedure to a Function procedure and return the appropriate value. (Дополнительные сведения о событиях запросов приведены в этой статье, посвященным темам событий с префиксом Query.)(For details about query events, see this reference for event topics prefixed with Query.)

Если невенткоде определяет событие запроса (события с префиксом " запрос"), возвращайте значение true из висевентпрок , чтобы отменить событие, и возвратит значение false , чтобы разрешить это.If nEventCode identifies a query event (events prefixed with Query), return True from VisEventProc to cancel the event, and return False to allow it to happen. Значение является произвольным для других событий.The value is arbitrary for other events. Если вы не возвращаете явное значение, Microsoft Visual Basic для приложений (VBA) возвращает пустой Variant, который Visio интерпретирует как false.If you do not return an explicit value, Microsoft Visual Basic for Applications (VBA) returns an empty Variant, which Visio interprets as False.

ПримерExample

В этом примере показано, как создать модуль класса, который реализует IVisEventProc для обработки событий, инициированных исходным объектом в Visio, например объекта Document .This example shows how to create a class module that implements IVisEventProc to handle events fired by a source object in Visio, for example, the Document object. Модуль состоит из функции висевентпрок, которая использует блок case для проверки наличия трех событий: документсавед, пажеаддеди шапесделетед.The module consists of the function VisEventProc, which uses a Select Case block to check for three events: DocumentSaved, PageAdded, and ShapesDeleted. Другие события попадают под вариант по умолчанию (Case Else).Other events fall under the default case (Case Else). Каждый блок case создает строку ( стрмессаже), содержащую имя и код события вызванного события.Each Case block constructs a string ( strMessage) that contains the name and event code of the event that fired. Наконец, функция отображает строку в окне Интерпретация.Finally, the function displays the string in the Immediate window.

Скопируйте этот пример кода в новый модуль класса в VBA или Visual Basic, наведя имя модуля клсевентсинк.Copy this sample code into a new class module in VBA or Visual Basic, naming the module clsEventSink. Затем можно использовать модуль Event — Sink для создания экземпляра класса клсевентсинк и объектов event , которые отправляют уведомления об обработке событий экземпляру класса.You can then use an event-sink module to create an instance of the clsEventSink class and Event objects that send notifications of event firings to the class instance. Сведения о том, как создать модуль Event — Sink, можно найти в примере для метода аддадвисе .To see how to create an event-sink module, see the example for the AddAdvise method.

 
Implements Visio.IVisEventProc 
 
 
'Declare visEvtAdd as a 2-byte value 
'to avoid a run-time overflow error 
Private Const visEvtAdd% = &H8000 
 
Private Function IVisEventProc_VisEventProc( _ 
 ByVal nEventCode As Integer, _ 
 ByVal pSourceObj As Object, _ 
 ByVal nEventID As Long, _ 
 ByVal nEventSeqNum As Long, _ 
 ByVal pSubjectObj As Object, _ 
 ByVal vMoreInfo As Variant) As Variant 
 
 Dim strMessage As String 
 
 
 'Find out which event fired 
 Select Case nEventCode 
 Case visEvtCodeDocSave 
 strMessage = "DocumentSaved (" & nEventCode & ")" 
 Case (visEvtPage + visEvtAdd) 
 strMessage = "PageAdded (" & nEventCode & ")" 
 Case visEvtCodeShapeDelete 
 strMessage = "ShapesDeleted(" & nEventCode & ")" 
 Case Else 
 strMessage = "Other (" & nEventCode & ")" 
 End Select 
 
 
 'Display the event name and the event code 
 Debug.Print strMessage 
 
End Function

Поддержка и обратная связьSupport and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи?Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.