• 締切済み

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 ); } }

  • artp
  • お礼率0% (0/2)

みんなの回答

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.2

>>dwLen = ::ImmGetConversionList( hKL,hIMC,_T("きちよーの"),NULL,0,GCL_CONVERSION ); >dwLen = ::ImmGetConversionList( hKL,hIMC,_T("きちよーの"),(LPCANDIDATELIST)1,0,GCL_CONVERSION ); なんでNULLじゃない場合はキャストしてるの? 関係ない気がするけどね・・・

artp
質問者

補足

キャストはただのコンパイラの警告対策です。 結局、ジャストシステムに問い合わせてみたところ、すぐに返事をいただきました。 ジャストシステム側からの回答では、回避策として以下のように引数にImmGetConversionListにNULLを指定してサイズを取得するのではなく、サイズを以下のように指定してください、とのことでした。 BYTE Buffer[0x300]; LPCANDIDATELIST lpCL = Buffer; ::ImmGetConversionList( hKL,hIMC,_T("きちよーの"),pCL,0x100,GCL_CONVERSION );

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

投げてる文字コードに問題があるんじゃない? ATOK2007がjis基準でしか受け取らないとかそういうオチが有ったりしないかな 問題になってるのは「ー」だと思うけどね。

artp
質問者

補足

「ー」が問題かと思い、"せんたー" や "きちょーの"という文字列で試してましたが、何の問題ありませんでした。 また、不思議なことに、以下のようにImmGetConversionListの第4引数にNULLでない値を指定すると、不正な処理はおきずに0が返ってきます。 dwLen = ::ImmGetConversionList( hKL,hIMC,_T("きちよーの"),(LPCANDIDATELIST)1,0,GCL_CONVERSION );

関連するQ&A

  • atokのカタカナ入力について

    現在atok16を自分のPCで使用しているのですが、MS-IMEのように無変換キーを押した際に、カタカナ→ひらがな といった具合に使いたいと思っています(現在はひらがな→カタカナ)。 プロパティのキーカスタマイズの、「カナ後変換」を選択してもMS-IMEのような変換になりません。 また、無変換キーに「カタカナ後変換」を割り当てると、ひらがなに変換したいときに変換対象の文字列先頭がカタカナのまま残ってしまいます。 どのような設定が一番適切なのでしょうか?

  • ATOK12について

    ATOK12について2・3お聞きしたいことがあります。 分かる質問だけでも良いのでお応え下さいませ。 1プロパティが出ないことがある。 右クリックしてプロパティを選んでも、作動しないことがあります。 どうしてでしょうか? 2文字列ボックスのATOK履歴をすべて消したい。 登録せず、ひつようのない履歴を消したいのですがかのうでしょうか? 3ローマ字入力がおかしくなる。 ローマ字入力で、ATOKのバーに、英小と出ていても、大文字だったり、 普通に使っているのにA表示になって平仮名が出せなかったり、 変換が上手くいかなかったりすることが週1くらいで起こります。 どうしたらなおりますか? よろしくおねがいします。

  • ATOKの変換について

    IMEだと文字を沢山打って変換するときに、文字を打ち終わり、スペースを押して変換候補が出たときに、Shiftを押しながら矢印(←→)を押すことで、変換の対象となる語句・文章の長さを変えることが出来ましたが、ATOKだとそれが出来ません。幾ら何でもこの機能がないということは考えられないのですが、ATOKで変換の範囲を変えるにはどうすれば良いのでしょうか。

  • ATOK15の変換がすごく遅い・・

    ここ数日、FEPの具合が悪いのか、日本語変換が遅いです。ATOK15にすると、すごく遅いのです。ひらがなの入力も途中でとまってしまいます。IMEにすると普通に打ち込めるようです。原因は何が考えられるでしょうか?

  • ATOKで入力変換したいとき、キーボードをどうする

     (すこし古いバージョンですが)ATOK2012をPC(NECのLAVIEです)にインストールしました。入力を英字から日本語にするとき、マイクロソフトのIMEでは、キーボード左上にある「半角/全角 漢字」キーを押せばよいのですが、ATOKではどうしたらよいですか? IMEのように、特定のキーを押せば一発で入力切替ができるようにしたいのです。 (ATOKをインストールしたのは、最近、IMEでは、す早く文字入力をして原稿を書いていると、いつしか勝手に文字変換をするようになってしまうからです。たとえば、「また」と打つためにまず「m」を入力すると、すぐさま「midnight」などに変換してしまうようになるのです。どうして? 学習能力がよすぎる?)

  • windows7 で ATOK変換はできませんか?

    これまで文字変換はATOKを使用してきました。 windows7はIMEでしか変換ができないのですか?

  • ATOKの辞書について

    ATOK17を使用しているのですが、 インターネットで顔文字の辞書などをDLしてこようと 思ったところ、ATOK17の辞書がなかなか見つかりません。 ATOK16などの辞書はあるのですが、 ATOK16や、MS-IME用テキスト形式の辞書はATOK17用に変換できたりするのですか??

  •  ATOK変換第一候補に平仮名を出さない

     ATOK変換第一候補に平仮名を出さない  おはようございます。質問させていただきます。 どうぞよろしくお願いいたします。  初めてATOK試用版を使い始めてみましたが、 MS-IMEにもあった、 第一候補に平仮名を出す or 出さない の設定がどのようにすれば可能になるのか分からず 四苦八苦いたしております。。。 (毎回スペースキーを2度押すのは手間なので。。orz)  もしお詳しい方がいらっしゃいましたら,アドバイスいただきたく どうぞよろしくお願いいたします。

  • ATOKからIMEに切り替わってしまうのは、なぜ?

    日本語変換にATOKを使っているのですが、文字を打っているときに、誤ってキーボードのどこかに触れてしまったようで、いつの間にやら変換が元々パソコンに入っていたIMEに切り替わってしまいます。 これって、キーボードのどのキーを触ったら、そうなるのでしょうか? また、戻し方を教えてください。 宜しくお願い致します。

  • ATOK2009で変換について

    こんにちは。 ATOK2009について質問なのですが、 Web上(このフォームみたいに)で入力して変換する場合と、 普通にテキストに入力にして変換してする場合とは勝手 が違います。 IMEから、辞書登録をひきついてついているのですが、 例えば、 「かおもじ」という単語を登録しているのですが、 ATOK(のデフォルトなのかな?)のかおもじしか出てこなず、 辞書登録したかおもじが出てきません。 後、三点リーダーというのを打てば、普通なら…が変換候補 にあがるのですが、こういうのまでもが変換されません。 (候補の中にさえ出ていない) どちらも、Web上以外で入力変換する場合は、普通に 辞書登録したものが候補反映されます。 IMEでできていたことが、ATOK2009に乗り換えたところ、 こういうのがちょっとできなくなったので、ちょっと不便 です。 よろしくお願いします。 P.S)後、お勧めの機能(技)があったらご教授よろしくお願います。

専門家に質問してみよう