DOBON.NET DOBON.NETプログラミング掲示板過去ログ

IME変換文字列の設定方法

環境/言語:[WindowsXP,VB.NET2002,MS-IME2002]
分類:[.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変換文字列の設定方法を教えていただけないでしょう
か。よろしくお願いします。
Any型に関してはサポートされませんので、きちんと型指定を行う必要が
あります。
別の型で渡す必要がある場合は関数を同名の関数名で定義(オーバーロード)
します。

参考になるかどうかはわかりませんが、私のサイトに
ImmGetCompositionStringを使ったサンプルがありますのが、どうでしょう?
  • 題名: Re[2]: IME変換文字列の設定方法
  • 著者: はもしげる
  • 日時: 2004/01/14 13:36:05
  • ID: 2148
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
ご返信ありがとうございました。
参考にさせていただいて、再挑戦します。

DOBON.NET | プログラミング道 | プログラミング掲示板