- 締切済み
ImmGetConversionListとATOKについて
Windows XP上で、ダイアログのボタンが押されたら、ひらがなを漢字に変換するプログラムを作成しています。 変換するのにImmGetConversionListを使用していますが、ATOK 2007だと特定の文字列("きちよーの"という文字列)を変換すると、不正な処理で終了してしまいます。 IMEでは問題ありません。これは、ATOK 2007の不具合なのでしょうか? また、回避するには、特定の文字列であれば変換しないようにするしかないのでしょうか? 以下のコードを実行すると不正な処理で止まってしまいます。 CMyDialog::OnOK() { HIMC hIMC = ::ImmCreateContext(); HKL hKL = ::GetKeyboardLayout(0); DWORD dwLen; if( hIMC ){ dwLen = ::ImmGetConversionList( hKL,hIMC,_T("きちよーの"),NULL,0,GCL_CONVERSION ); ::ImmDestroyContext( hIMC ); } }
- みんなの回答 (2)
- 専門家の回答
補足
キャストはただのコンパイラの警告対策です。 結局、ジャストシステムに問い合わせてみたところ、すぐに返事をいただきました。 ジャストシステム側からの回答では、回避策として以下のように引数にImmGetConversionListにNULLを指定してサイズを取得するのではなく、サイズを以下のように指定してください、とのことでした。 BYTE Buffer[0x300]; LPCANDIDATELIST lpCL = Buffer; ::ImmGetConversionList( hKL,hIMC,_T("きちよーの"),pCL,0x100,GCL_CONVERSION );