IME自前表示にて
Posted: 2015年12月16日(水) 11:47
IMEの変換文字を自前で表示しているのですが
ウィンドウメッセージをフックしてWM_IME_COMPOSITIONでImmGetCompositionString(GCS_COMPSTR)等、
WM_IME_NOTIFYのIMN_OPENCANDIDATE、IMN_CHANGECANDIDATEの場合はImmGetCandidateListで
自前で変換文字や変換候補を取得、表示しているのですが
IME関連のメッセージの場合にCallWindowProcをせずにreturn、またはIMEの変換候補ウィンドウを
閉じるAPI関数を呼ぶなどしてIMEの変換候補ウィンドウを表示しない場合に
変換候補を数字キー1~9で確定すると、
どの変換候補ページでも最初のページの1~9番目の文字に確定してしまいます。
IMEの変換候補ウィンドウを表示した場合は表示された変換候補ページの1~9番目の文字になります。
処理的には数字キーで確定するとおそらくWM_IME_COMPOSITIONが来るので
そこでImmGetCompositionString(GCS_COMPSTR)で取得し
ImmGetCompositionString(GCS_COMPCLAUSE)等で文節に分けて表示しています。
解決作があればよろしくお願いします。
ウィンドウメッセージをフックしてWM_IME_COMPOSITIONでImmGetCompositionString(GCS_COMPSTR)等、
WM_IME_NOTIFYのIMN_OPENCANDIDATE、IMN_CHANGECANDIDATEの場合はImmGetCandidateListで
自前で変換文字や変換候補を取得、表示しているのですが
IME関連のメッセージの場合にCallWindowProcをせずにreturn、またはIMEの変換候補ウィンドウを
閉じるAPI関数を呼ぶなどしてIMEの変換候補ウィンドウを表示しない場合に
変換候補を数字キー1~9で確定すると、
どの変換候補ページでも最初のページの1~9番目の文字に確定してしまいます。
IMEの変換候補ウィンドウを表示した場合は表示された変換候補ページの1~9番目の文字になります。
処理的には数字キーで確定するとおそらくWM_IME_COMPOSITIONが来るので
そこでImmGetCompositionString(GCS_COMPSTR)で取得し
ImmGetCompositionString(GCS_COMPCLAUSE)等で文節に分けて表示しています。
解決作があればよろしくお願いします。