ページ 11

IME自前表示にて

Posted: 2015年12月16日(水) 11:47
by gomos
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)等で文節に分けて表示しています。

解決作があればよろしくお願いします。