文字列をローマ字表記に変換

[戻る]
シャノン 2004/01/17(土) 02:11:06
いつもお世話になっております。よろしくお願いします。

IME で変換、確定した文字列をローマ字表記にしたいのですが、簡単に済ます方法はあ
りますでしょうか?
例えば、「やまだ」→「山田」と変換して確定したら、そこからどうにかして
「yamada」という文字列を取得したいのです。
フリガナの取得(山田→ヤマダ)は ImmGetCompositionString という API でできまし
た。
ローマ字もこの延長でできないか!?と思い調べてみたところ、GCS_TYPINGINFO とかい
う値がまさに希望を満たしてくれそうだったのですが、コイツが MSDN にもヘッダファ
イルにも見当たりませんでした。無念。
フリガナとローマ字の対応テーブルを持つというテもありますが、できればそれは最終
手段として、もっとスマートな方法があるのならばそれを採用したいと考えています。

何かいい方法をご存知でしたら、どうかよろしくご教授お願いいたします。

ねこにゃん 2004/01/17(土) 12:33:28
GCS_TYPINGINFOの値がわからないなら他のGCS_XXXの値を見て見れば
大体どの値か想像つくんではないかな?
適当に値を試していけばいつかたどりつけるよ。きっと。

tib 2004/01/17(土) 12:42:22
私自身はこれを使った事がないのですが、
http://nienie.com/~masapico/api_ImmGetCompositionString.html
は参考になりますか?

で、ちょっと疑問に思ったのが、「ローマ字表記が欲しいのか、ユーザーの入力内容がほ
しいのか」という点です。

例えば、「しゃちょう(社長)」と入力するのにも「shachou」と入力する人もいれば
「syatyou」と入力する人もいるでしょうし、「shixyatixyou」と入力する人もいるかも
知れません。
もし、「shixyatixyou」と入力されても「shachou」と表示させたい、というのであれ
ば、フリガナ→ローマ字対応テーブルを持たせた方がいいと思います。

シャノン 2004/01/17(土) 14:45:19
ねこにゃんさん>
GCS_XXX の値が 0x0001 から 0x1000 まで定義されていたので、0x2000 〜 0x80000000 
まで試しましたが、すべてエラーが返ってきてしまいました。

tib さん>
そのページには GCS_TYPINGINFO というのがありますが、それがヘッダファイルにも最
新の Platform SDK にも載っていないのです。やりたいことはまさにその TYPINGINFO 
の通りなのですが。

言葉が足りず申し訳ありません。
>で、ちょっと疑問に思ったのが、「ローマ字表記が欲しいのか、ユーザーの入力内容
>がほしいのか」という点です。
後者です。

環境を書き忘れてました。
Win98 SE + VC++ 6.0、MFC 有です。

シャノン 2004/01/21(水) 02:01:57
[[解決]]
古いスレを上げて申し訳ありませんが、一応報告。
SetWindowsHookEx で WH_KEYBOARD を引っ掛けてやることでなんとかなりそうです。
ありがとうございました。

dairygoods 2004/01/21(水) 10:07:50
> SetWindowsHookEx で WH_KEYBOARD を引っ掛けてやることでなんとかなりそうです。

ふと思ったのですが、かな入力や
はたまた、手書き、音声入力等は考慮しなくていいんですか?

シャノン 2004/01/21(水) 12:19:52
[[解決]]
>ふと思ったのですが、かな入力や
>はたまた、手書き、音声入力等は考慮しなくていいんですか?

実を言うと学校の課題でして^^;
フリガナが取得できるだけでも、クラス全体のレベルからすれば凝りすぎな感があるの
で、ローマ字入力のみでよしとします。応用でかな入力くらいは対応できそうですが、
手書きや音声まではちょっと…
課題の中にフリガナの取得は含まれておらず、勝手にやっていることですし、まだまだ
他の部分も未完成なので、とりあえずそちらに注力したいと思います。

古いスレッドには追加発言できません。