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