Load Method

Load Method

Populates a new InkDisp object with known binary data.

Declaration

[C++]

HRESULT Load (
    [in] VARIANT Stream
);

[Microsoft® Visual Basic® 6.0]

Public Sub Load( _
    inkData _
)

Public Sub Load( _
    Stream As IStream _
)

Parameters

Stream

[in] The stream that contains the ink data.

For more information about the VARIANT structure, see Using the Automation Library.

inkData

[in] The byte array that contains the ink data.

IStream

[in] The stream that contains the ink data.

Return Value

HRESULT value Description
S_OK Success.
E_INVALIDARG VARIANT was not of correct type (byte array).
E_OUTOFMEMORY Cannot allocate memory for IStream.
E_UNEXPECTED Unexpected parameter or property type.
E_INK_EXCEPTION An exception occurred inside the method.

Remarks

You can load ink only into a new, empty InkDisp object — one that hasn't collected any strokes or doesn't have any attached properties. If you try to load ink into an InkDisp object that has collected strokes or attached properties, even if the strokes or properties have been deleted from the InkDisp object, an exception is thrown. This occurs because of how stroke IDs are assigned. A stroke is assigned a unique ID, and this ID is not reused, even if the stroke has been deleted from an Ink object. This means that, if an InkDisp object contained a stroke with an ID of 1 and you deleted the stroke and loaded another InkDisp object into this InkDisp object, stroke IDs would start at 2. This would be confusing and therefore is not allowed.

Note: If you do attempt to load ink into an InkDisp object that is not empty, all data in the InkDisp object, including any custom strokes or extended properties, is lost when you call Load.

The Save method allows you to persist the ink in an InkDisp object in Graphics Interchange Format (GIF) format, which consists of an array of byte data (the tla_gif persistence format is specified in the InkPersistenceFormat enumeration type). After you have the array of byte data, you can load the array of byte data into another InkDisp object. This means that you can load GIF-compatible byte array data into another InkDisp object in the same way as if you had called the Save method and received a byte array that was not in GIF format.

Note: You cannot create an image, persist that image as a byte array, and then load that byte array into another InkDisp object. This is because, after you load byte array data as a GIF, Tablet PC cannot control the format of that data. So, after you persist the image into a byte array again, you cannot call Load on that data.

Example

[Visual Basic 6.0]

This Visual Basic 6.0 example shows how the Ink in the InkCollector can be saved in a Byte array and loaded into a new InkDisp object.

Dim theInkCollector As InkCollector

Private Sub Command1_Click()
    Dim theSavedInk() As Byte
    theSavedInk = theInkCollector.Ink.Save( _
        InkPersistenceFormat.IPF_InkSerializedFormat)
    '...
    Dim theNewInk As New InkDisp
    theNewInk.Load theSavedInk
End Sub

Private Sub Form_Load()
    Set theInkCollector = New InkCollector
    theInkCollector.hWnd = Me.hWnd
    theInkCollector.Enabled = True
End Sub

Applies To