InkAdded Event
InkAdded Event |
Occurs when a stroke is added to the InkDisp object.
Declaration
[C++]
void InkAdded([in] VARIANT StrokeIds);
[Microsoft® Visual Basic® 6.0]
Public Event InkAdded(StrokeIds)
Parameters
StrokeIds
[in] The integer array of stroke ID information for all of the strokes that have been added when this event occurs.
For more information about the VARIANT structure, see Using the Automation Library.
Remarks
If you use the InkOverlay object or the InkPicture control (where EditingMode equals Delete and EraserMode equals StrokeErase) and pass the eraser over a stroke, you get the following sequence of events:
- InkDeleted
- InkAdded
- InkDeleted
The additional InkAdded and InkDeleted events occur because the underlying code adds an internal, invisible stroke to track the eraser.
This event method is defined in the _IInkEvents interface. The _IInkEvents interface implements the IDispatch interface with an identifier of DISPID_IEInkAdded.
The InkAdded event is fired even when in select or erase mode, not just when inserting ink. This requires that you monitor the editing mode (which you are responsible for setting) and be aware of the mode before interpreting the event. The advantage of this requirement is greater freedom to innovate on the platform through greater awareness of platform events.
Example
[Visual Basic 6.0]
This Visual Basic 6.0 example demonstrates adding an InkAdded event handler to an InkDisp object. Certain strokes are deleted as soon as they are created, if they have more than two self intersections, to demonstrate the InkDeleted event. The event handler writes information about the added strokes to a list box (List1).
Option Explicit
Dim WithEvents theInkCollector As InkCollector
Dim WithEvents theInk As InkDisp
Private Sub Form_Load()
Set theInkCollector = New InkCollector
Set theInk = theInkCollector.Ink
theInkCollector.hWnd = Me.hWnd
theInkCollector.Enabled = True
End Sub
Private Sub theInkCollector_Stroke( _
ByVal Cursor As MSINKAUTLib.IInkCursor, _
ByVal Stroke As MSINKAUTLib.IInkStrokeDisp, _
Cancel As Boolean)
If UBound(Stroke.SelfIntersections) > 2 Then
theInkCollector.Ink.DeleteStroke Stroke
End If
End Sub
Private Sub theInkCollector_InkAdded(ByVal StrokeIds As Variant)
Dim theStrokeId As Variant
For Each theStrokeId In StrokeIds
List1.AddItem "Added Stroke ID " & theStrokeId
Next
End Sub
Private Sub theInk_InkDeleted(ByVal StrokeIds As Variant)
Dim theStrokeId As Variant
For Each theStrokeId In StrokeIds
List1.AddItem "Deleted Stroke ID " & theStrokeId
Next
Me.Refresh
End Sub