2009年6月4日木曜日

.NET(Mobile) SIPパネルを切り替えるには

Touch Diamond (X04HT)のSIPはデフォルトで以下の5種類があります。
・10キー
・ひらがな/カタカナ
・ローマ字/かな
・手書き入力
・手書き検索

このSIPパネルを切り替えます。
方法は2つあります。

Microsoft.WindowsCE.Forms.InputMethodクラスを使用する方法です。
フォームにInputPanelを配置し、以下のコードを実行する。
Public Class Form1

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim im As Microsoft.WindowsCE.Forms.InputMethod
For Each im In Me.InputPanel1.InputMethods
Me.ListBox1.Items.Add(im.Name)
Next im

End Sub

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ListBox1.SelectedIndexChanged
Dim strIM As String
strIM = ListBox1.SelectedItem.ToString()

Dim im As Microsoft.WindowsCE.Forms.InputMethod
For Each im In Me.InputPanel1.InputMethods
If im.Name = strIM Then
InputPanel1.CurrentInputMethod = im
End If
Next im
End Sub

End Class


こちらはAPI「SipSetCurrentIM」を使用します。
フォームにInputPanelを配置する必要はありません。
Imports System.Runtime.InteropServices

Public Class Form1

Private _InputMethod As New Dictionary(Of String, Guid)

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
For Each im As Microsoft.WindowsCE.Forms.InputMethod In Me.InputPanel1.InputMethods
_InputMethod.Add(im.Name, im.Clsid)
Me.ListBox1.Items.Add(im.Name)
Next im
End Sub

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ListBox1.SelectedIndexChanged
Dim strIM As String = ListBox1.SelectedItem.ToString()
Dim guid As Guid = Me._InputMethod(strIM)

SipSetCurrentIM(guid.ToByteArray)
End Sub

 _
Private Shared Function SipSetCurrentIM(ByVal clsid As Byte()) As Boolean
End Function

End Class

0 件のコメント: