NewPackets Event
NewPackets Event |
Occurs when the ink collector receives packets.
Declaration
[C++]
void NewPackets(
[in] IInkCursor* Cursor,
[in] IInkStrokeDisp* Stroke,
[in] long PacketCount,
[in, out] VARIANT* PacketData
);
[Microsoft® Visual Basic® 6.0]
Public Event NewPackets( _
Cursor As IInkCursor, _
Stroke As IInkStrokeDisp, _
PacketCount As Long, _
PacketData _
)
Parameters
Cursor
[in] The IInkCursor object that generated the NewInAirPackets event.
Stroke
[in] Specifies the IInkStrokeDisp object.
PacketCount
[in] The number of packets received for a IInkStrokeDisp object.
PacketData
[in, out] An array that contains the the selected data for the packet.
For more information about the VARIANT structure, see Using the Automation Library.
Remarks
Packets are received while a stroke is being collected. Packet events occur rapidly, and a NewPackets event handler must be fast or performance suffers.
This event method is defined in the _IInkCollectorEvents, _IInkOverlayEvents, and _IInkPictureEvents dispatch-only interfaces (dispinterfaces) with an ID of DISPID_ICENewPackets.
This event should be used carefully as it could have an adverse effect on ink performance if too much code is executed in the event handlers.
To set which properties are contained in this array, use the DesiredPacketDescription property of the ink collector object. The array that the PacketData parameter returns contains the data for those properties.
Note: Although you can modify the packet data, these modifications are not persisted or used.
Example
[Visual Basic 6.0]
This Visual Basic 6.0 example draws a rectangle on the form with a red outline when the packets in the NewPackets event are within the rectangle or with a black outline when the packets are outside the rectangle. This demonstrates how to use the packet events to control application behaviors.
Option Explicit
Dim WithEvents theInkCollector As InkCollector
Dim theInkRectangle As InkRectangle
Private Sub Form_Load()
Set theInkCollector = New InkCollector
theInkCollector.hWnd = Me.hWnd
theInkCollector.Enabled = True
Set theInkRectangle = New InkRectangle
theInkRectangle.SetRectangle 40, 40, 120, 300
ScaleMode = vbPixels
Form1.Line (theInkRectangle.Left, theInkRectangle.Top)-(theInkRectangle.Right, _
theInkRectangle.Bottom), RGB(0, 0, 0), B
theInkCollector.SetEventInterest ICEI_NewPackets, True
End Sub
Private Sub theInkCollector_NewPackets( _
ByVal Cursor As MSINKAUTLib.IInkCursor, _
ByVal Stroke As MSINKAUTLib.IInkStrokeDisp, _
ByVal PacketCount As Long, PacketData As Variant)
Dim packetX As Long
Dim packetY As Long
'There may be multiple packets of data, but we will rely on
'the fact that there will be at least one, and its first two
'data items are the X and Y coordinates.
packetX = PacketData(0)
packetY = PacketData(1)
theInkCollector.Renderer.InkSpaceToPixel Form1.hDC, packetX, packetY
'Draw the box in red if the packets are within it, and black if not.
If theInkRectangle.Left < packetX And theInkRectangle.Right > packetX And _
theInkRectangle.Top < packetY And theInkRectangle.Bottom > packetY Then
Form1.Line (theInkRectangle.Left, theInkRectangle.Top)-(theInkRectangle.Right, _
theInkRectangle.Bottom), RGB(255, 0, 0), B
Else
Form1.Line (theInkRectangle.Left, theInkRectangle.Top)-(theInkRectangle.Right, _
theInkRectangle.Bottom), RGB(0, 0, 0), B
End If
End Sub
Applies To
- InkCollector Object (Automation Library Reference)
- InkOverlay Object (Automation Library Reference)
- InkPicture Control (Automation Library Reference)