by あひる » 2008年2月12日(火) 13:55
まず以下の関数を定義します。
コード: 全て選択
Declare Function ImmGetContext Lib "imm32.dll" (hWnd As HWND) As DWord
Declare Function ImmGetConversionStatus Lib "Imm32.dll" (hIMC As DWord, ByRef lpfdwConversion As DWord, ByRef lpfdwSentence As DWord) As DWord
Declare Function ImmGetOpenStatus Lib "imm32.dll" (hIMC As DWord) As DWord
Declare Function ImmSetOpenStatus Lib "imm32.dll" (hIMC As DWord, fOpen As Long) As DWord
Declare Function ImmReleaseContext Lib "imm32.dll" (hWnd As HWND, hIMC As DWord) As DWord
あとは、例えばエディットボックスを作ってからこんな感じで使用します。
コード: 全て選択
Sub MainWnd_EditBox1_SetFocus()'入力フォーカスを取得した
Dim hImc As DWord
Dim dwConv As DWord, dwSent As DWord
Dim hEdit As HWND
hEdit = GetDlgItem(hMainWnd, EditBox1)
hImc = ImmGetContext(hMainWnd)
ImmGetConversionStatus(hImc, dwConv, dwSent)
ImmSetOpenStatus(hImc, TRUE)'Onにする
ImmReleaseContext(hMainWnd, hImc)
End Sub
Sub MainWnd_EditBox1_KillFocus()'入力フォーカスを失った
Dim hImc As DWord
Dim dwConv As DWord, dwSent As DWord
Dim hEdit As HWND
hEdit = GetDlgItem(hMainWnd, EditBox1)
hImc = ImmGetContext(hMainWnd)
ImmGetConversionStatus(hImc, dwConv, dwSent)
ImmSetOpenStatus(hImc, FALSE)'Offにする
ImmReleaseContext(hMainWnd, hImc)
End Sub
おまけ
ImmGetOpenStatus関数でOn/Offを調べることもできます。
こんな方法でどうですか?
まず以下の関数を定義します。
[code]Declare Function ImmGetContext Lib "imm32.dll" (hWnd As HWND) As DWord
Declare Function ImmGetConversionStatus Lib "Imm32.dll" (hIMC As DWord, ByRef lpfdwConversion As DWord, ByRef lpfdwSentence As DWord) As DWord
Declare Function ImmGetOpenStatus Lib "imm32.dll" (hIMC As DWord) As DWord
Declare Function ImmSetOpenStatus Lib "imm32.dll" (hIMC As DWord, fOpen As Long) As DWord
Declare Function ImmReleaseContext Lib "imm32.dll" (hWnd As HWND, hIMC As DWord) As DWord[/code]
あとは、例えばエディットボックスを作ってからこんな感じで使用します。
[code]Sub MainWnd_EditBox1_SetFocus()'入力フォーカスを取得した
Dim hImc As DWord
Dim dwConv As DWord, dwSent As DWord
Dim hEdit As HWND
hEdit = GetDlgItem(hMainWnd, EditBox1)
hImc = ImmGetContext(hMainWnd)
ImmGetConversionStatus(hImc, dwConv, dwSent)
ImmSetOpenStatus(hImc, TRUE)'Onにする
ImmReleaseContext(hMainWnd, hImc)
End Sub
Sub MainWnd_EditBox1_KillFocus()'入力フォーカスを失った
Dim hImc As DWord
Dim dwConv As DWord, dwSent As DWord
Dim hEdit As HWND
hEdit = GetDlgItem(hMainWnd, EditBox1)
hImc = ImmGetContext(hMainWnd)
ImmGetConversionStatus(hImc, dwConv, dwSent)
ImmSetOpenStatus(hImc, FALSE)'Offにする
ImmReleaseContext(hMainWnd, hImc)
End Sub[/code]
おまけ
ImmGetOpenStatus関数でOn/Offを調べることもできます。
こんな方法でどうですか?