Private Declare Function ImmSetCompositionString Lib "imm32.dll" _ Alias "ImmSetCompositionStringA" _ (ByVal himc As Long, ByVal dwIndex As Long, lpComp As Any, _ ByVal dw As Long, lpRead As Any, ByVal dw2 As Long) As Long
Private Sub Command1_Click() Dim readStr() As Byte lngICHwnd = ImmGetContext(lngTargetHwnd) readStr = StrConv(Text1.Text, vbFromUnicode) result = ImmSetCompositionString(lngICHwnd, SCS_SETSTR, ByVal 0, 0, _ readStr(0), UBound(readStr) + 1) (以下略)
VB.NETになって、As Anyの指定ができなくなったこと、StrConv関数で vbFromUnicodeがなくったことで、VB.NETに自動的にアップグレードできません でした。関数宣言に、lpComp As Integer、lpRead As Byte、StrConv関数の代わ りに、System.Text.UnicodeEncoding.Unicode.GetBytes()関数などを試して みましたが、うまくいきません。 どなたか、VB.NETでのIME変換文字列の設定方法を教えていただけないでしょう か。よろしくお願いします。
分類:[.NET]
TextBoxに入力されたひらがなを、CommandButtonが押されたら、MS-IME2002を
使って漢字変換するプログラムをVB6で作成しました。これをVB.NETに移そうと
して、IMEに変換文字列を設定するImmSetCompositionStringの使い方で困って
います。
VB6では、以下のように宣言、プログラムを組んでいました。
Private Declare Function ImmSetCompositionString Lib "imm32.dll" _
Alias "ImmSetCompositionStringA" _
(ByVal himc As Long, ByVal dwIndex As Long, lpComp As Any, _
ByVal dw As Long, lpRead As Any, ByVal dw2 As Long) As Long
Private Sub Command1_Click()
Dim readStr() As Byte
lngICHwnd = ImmGetContext(lngTargetHwnd)
readStr = StrConv(Text1.Text, vbFromUnicode)
result = ImmSetCompositionString(lngICHwnd, SCS_SETSTR, ByVal 0, 0, _
readStr(0), UBound(readStr) + 1)
(以下略)
VB.NETになって、As Anyの指定ができなくなったこと、StrConv関数で
vbFromUnicodeがなくったことで、VB.NETに自動的にアップグレードできません
でした。関数宣言に、lpComp As Integer、lpRead As Byte、StrConv関数の代わ
りに、System.Text.UnicodeEncoding.Unicode.GetBytes()関数などを試して
みましたが、うまくいきません。
どなたか、VB.NETでのIME変換文字列の設定方法を教えていただけないでしょう
か。よろしくお願いします。