Callback VIs
- Updated2025-08-15
- 3 minute(s) read
A callback VI contains the code you write to handle an ActiveX or .NET event you specify. You must create a callback VI to handle events from ActiveX controls or .NET objects when the controls or objects generate the registered events. The callback VI runs when the event occurs. When you create a callback VI, LabVIEW creates a reentrant VI that you can open and edit to handle an event. A callback VI contains the following elements:
-
Event Common Data contains the following elements:
- Event Source is a numeric control that specifies the source of the event, such as LabVIEW, ActiveX, or .NET. A value of 1 indicates an ActiveX event. A value of 2 indicates a .NET event.
- Event Type specifies which event occurred. This is an enumerated type for user interface events and a 32-bit unsigned integer type for ActiveX,.NET, and other event sources. For ActiveX events, the event type represents the method code, or ID, for the event registered. You can ignore this element for .NET.
- Time Stamp is the time stamp in milliseconds that specifies when the event was generated.
- Control Ref is a reference to the ActiveX or automation refnum or .NET object on which the event occurred.
- Event Data is a cluster of the parameters specific to the event the callback VI handles. LabVIEW determines the appropriate Event Data when you select an event from the Register Event Callback function. If an event does not have any data associated with it, LabVIEW does not create this control in the callback VI.
- Event Data Out is a cluster of the modifiable parameters specific to the event the callback VI handles. This element is available only if the ActiveX or.NET event has output parameters.
- (Optional) user parameter is data that you want to pass to the callback VI when the ActiveX or.NET object generates the event.
To allow callback VIs to execute without interruption, LabVIEW delays the processing of operating system messages until any callback VIs stop execution or until you load a modal window. When LabVIEW delays the processing of operating system messages, you cannot interact with any LabVIEW front panels. A modal window is a type of window that remains active or remains on top of all other LabVIEW windows until you close the window or open another modal window. You cannot interact with other windows while a modal window is open. Most dialog boxes in LabVIEW are modal windows.
You cannot open a non-modal window from a LabVIEW callback VI nor a DLL while any other process is running. Refer to Calling Non-Modal Windows Programmatically for more information about calling a non-modal window from a callback VI or DLL.
|
Note ActiveX objects call ActiveX callback VIs synchronously. This means that the object may not be able to run other code during the execution of the callback and may cause deadlocks. You should carefully consider the interactions between the callback diagram and other code. For example, calling a non-reentrant subroutine inside an ActiveX callback VI could hang if you call the callback while the subroutine is already executing. |