IMEをOn/Offする
IMEのOn/Offをコントロールするテクニックです。
サンプル(32bit) ダウンロード
'Ime制御
Public Declare Function ImmGetContext Lib "imm32.dll" (ByVal hWnd As Long) As Long
Public Declare Function ImmSetOpenStatus Lib "imm32.dll" (ByVal himc As Long, ByVal b As Long) As Long
Public Declare Function ImmReleaseContext Lib "imm32.dll" (ByVal hWnd As Long, ByVal himc As Long) As Long
Private Sub Text1_GotFocus()
Dim himc As Long
Dim hWnd As Long
hWnd = Text1.hWnd
'IMEをOn
himc = ImmGetContext(hWnd)
Call ImmSetOpenStatus(himc, 1)
Call ImmReleaseContext(hWnd, himc)
'文字列を反転させる
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
'フリガナ監視スタート
Call Furigana_Start(Text1)
End Sub
サンプル解説
IMEのOn/Offは、3段階で制御を行います。
- ImmGetContext関数でコンテキストを取得。
- ImmSetOpenStatus関数でIMEの状態をセット。
- ImmReleaseContext関数でコンテキストを解放。
肝心のIMEのOn/Offをコントロールしてるのは、ImmSetOpenStatus関数で行っています。
引数の内容は次の通りです。
(引数の名前は、Declare Functionで指定したものです)
メンバー I/O 説明 himc In ImmGetContext関数で取得したコンテキスト b In IMEの状態
- 0:Off
- 1:On
ついでに、ImmGetContext関数の引数は・・・
メンバー I/O 説明 hWnd In フォームのハンドル そして、ImmReleaseContext関数の引数は・・・
メンバー I/O 説明 hWnd In フォームのハンドル himc In ImmGetContext関数で取得したコンテキスト と、なっています。
[ Window Close ]