ModifyTopAlternate MethodMethod
ModifyTopAlternate MethodMethod |
Changes the top alternate of a recognition result by using the specified alternate.
Declaration
[C++]
HRESULT ModifyTopAlternate (
[in] IInkRecognitionAlternate* alternate
);
[Microsoft® Visual Basic® 6.0]
Public Sub ModifyTopAlternate( _
alternate As IInkRecognitionAlternate _
)
Parameters
alternate
[in] The IInkRecognitionAlternate to use to modify the top alternate.
Return Value
HRESULT value | Description |
---|---|
S_OK | Success. |
TPC_E_NOT_RELEVANT | The lattice does not contain data. |
E_POINTER | A parameter contained an invalid pointer. |
E_INVALIDARG | The alternate does not match the known range, or it was not obtained from this lattice. |
E_INK_EXCEPTION | An exception occurred while processing. |
E_OUTOFMEMORY | Cannot allocate memory to complete the operation. |
Remarks
By default, the best result string of the recognition result corresponds to the top alternate. However, you can use this method to specify that alternates other than the top alternate are used in the result. When you choose an alternate other than the top alternate, you are essentially choosing a different path through the lattice of alternates that are associated with the results.
To retrieve the alternates that can be used to modify the recognition result, call the GetAlternatesFromSelection method.
Note: A call to ModifyTopAlternateMethod may modify the TopString and TopAlternate properties.
The alternate used in the function can be a word alternate in an entire sentence. For example, an alternate obtained by using GetAlternatesFromSelection (0,5) for "Hello World" only changes the "Hello" part of the word leaving the "World" part intact.
Example
[Visual Basic 6.0]
This Visual Basic 6.0 example recognizes strokes as they are made and uses a list box to report the first five alternates of the IInkRecognitionResult, and allows the user to select another alternate as the TopAlternate by double-clicking that alternates string in the list box, using ModifyTopAlternateMethod which changes the order of the alternates. The example calls SetResultOnStrokes to save the recognition result between the recognition event and a double-click event. This example was created as a standard .exe application with a reference added to the Microsoft Tablet PC Type Library and a list box, List1, added to the form.
Option Explicit
Dim WithEvents theInkCollector As InkCollector
Dim WithEvents theRecognizerContext As InkRecognizerContext
Dim theStrokes As InkStrokes
Private Sub Form_Load()
'Initialize the InkCollector
Set theInkCollector = New InkCollector
theInkCollector.hWnd = Me.hWnd
theInkCollector.Enabled = True
'Initialize the recognizer's strokes
'and assign them to the new RecognizerContext
Set theRecognizerContext = New InkRecognizerContext
Set theStrokes = theInkCollector.Ink.Strokes
Set theRecognizerContext.Strokes = theStrokes
End Sub
Private Sub List1_DblClick()
'Modify the top alternate to be the one double-clicked
Dim theRecognitionAlternates As IInkRecognitionAlternates
Dim theRecognitionResult As IInkRecognitionResult
Set theRecognitionAlternates = theStrokes.RecognitionResult. _
AlternatesFromSelection(0, -1, 5)
Set theRecognitionResult = theStrokes.RecognitionResult
theRecognitionResult.ModifyTopAlternate theRecognitionAlternates(List1.ListIndex)
theRecognitionResult.SetResultOnStrokes
'Update the list box with the new order of alternates
List1.Clear
Set theRecognitionAlternates = theStrokes.RecognitionResult. _
AlternatesFromSelection(0, -1, 5)
Dim theRecognitionAlternate As IInkRecognitionAlternate
For Each theRecognitionAlternate In theRecognitionAlternates
List1.AddItem (theRecognitionAlternate.String)
Next
End Sub
Private Sub theRecognizerContext_RecognitionWithAlternates( _
ByVal RecognitionResult As MSINKAUTLib.IInkRecognitionResult, _
ByVal CustomData As Variant, _
ByVal RecognitionStatus As MSINKAUTLib.InkRecognitionStatus)
'Update the list box with the alternates
List1.Clear
Dim theRecognitionAlternates As IInkRecognitionAlternates
Set theRecognitionAlternates = RecognitionResult.AlternatesFromSelection(0, -1, 5)
Dim theRecognitionAlternate As IInkRecognitionAlternate
For Each theRecognitionAlternate In theRecognitionAlternates
List1.AddItem (theRecognitionAlternate.String)
Next
'Save the recognition results with the strokes
RecognitionResult.SetResultOnStrokes
End Sub
Private Sub theInkCollector_Stroke( _
ByVal Cursor As MSINKAUTLib.IInkCursor, _
ByVal Stroke As MSINKAUTLib.IInkStrokeDisp, _
Cancel As Boolean)
'Tell the RecognizerContext to recognize the strokes
theStrokes.Add Stroke
theRecognizerContext.BackgroundRecognizeWithAlternates
End Sub