- - PR -
ひらがなをカタカナに自動的に変換する。
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-11-26 20:04
初めて投稿させていただきます。
私が今やりたいことは、まず一つのテキストボックスに東京都とかくともう一つのテキストボックスに自動的にトウキョウトとカタカナで表示されるというものです。 どう変換していいのかわからなかったので質問させていただきました。 勿論、東京都という文字を"とうきょうと"と打って変換させるのではなく、"ひがしきょうと"と打って変換したら漢字のほうは東京都でもカタカナのほうはヒガシキョウトとなって一向に構いません。 教えていただきたいです。よろしくお願いいたします。 | ||||||||||||
|
投稿日時: 2003-11-27 01:46
こんにちは、TEA-BREAKと申します。
思いつきですが、KeyPressを組み合わせて出来るのかな? 押された文字を記憶しておき、Enterが押されたときに、コード変換かけて カタカナで表示してあげるなど出来ませんかね? | ||||||||||||
|
投稿日時: 2003-11-27 06:47
TEA-BREAKさん早々の返信ありがとうございます!
keypressで保存しておいてっていうのはわかったんですけど、 どうやってカナにコード変換するのかが調べてみたのですがわかりません・・・。 もしヒントなどありましたら教えていただけますでしょうか? よろしくお願いいたします。 | ||||||||||||
|
投稿日時: 2003-11-27 07:37
こんにちわ。諸農です。
「ひらがなをカタカナに」ではないですね(^^; IMEをトラップする必要があるのではないでしょうか。 WM_IME_COMPOSITIONメッセージでGCS_RESULTREADSTRのパラメータの時に ImmGetCompositionStringで文字列を取得する、見たいな方法かしら。 詳しくはMSDNなどで調べてみてはいかがでしょうか。 ではでは(^^)/ _________________ 諸農和岳 Powered by Borland Delphi/C++Builder & Microsoft VS.NET [ メッセージ編集済み 編集者: Jubei 編集日時 2003-11-27 07:38 ] | ||||||||||||
|
投稿日時: 2003-11-28 22:46
返事が遅くなり申し訳ありません。
諸農さんが言われているようにIMEをトラップして、変換をかける方法が できるのであれば、そちらの方が良いと思われます。 かなり格好は悪いとは思いますが、私が思ったのは、押されたキーを 保持しておきます。 それをCASE文で、変換をかけるというものです。 例えば、"明日"と入力されたとします。 入力されたキーは『ASITA』になりますよね。 まず一文字目がAなので母音の場合は変換。(CASE文でAの場合は"ア"に変換) 次を見てSなので、そのまま保持。 その次をみてIなので変換(CASE文でSIの場合は"シ"に変換) 以下、くりかえし。 汚いとは思いますが、それしか思いつきませんでした・・・。 | ||||||||||||
|
投稿日時: 2003-11-29 02:16
諸農さん、TEA-BREAKさん返信ありがとうございました。
IMEをトラップの件、調べてみたのですが、資料が出てこなくて、 今度書店にでも行ってみようと思います。 CASE文で変換という手段、教えていただいてありがとうございます。 いろいろ考えた結果、もしIMEをトラップというのが可能であれば、そうします。 もし不可能なら、あきらめようと思います。 ご意見ありがとうございました。 | ||||||||||||
|
投稿日時: 2003-11-29 12:04
IMEと直接対話するときは現状ではWindowsAPIを叩きます。
http://www.kumei.ne.jp/c_lang/ ここのページの http://www.kumei.ne.jp/c_lang/sdk3/sdk_278.htm http://www.kumei.ne.jp/c_lang/sdk3/sdk_279.htm http://www.kumei.ne.jp/c_lang/sdk3/sdk_280.htm http://www.kumei.ne.jp/c_lang/sdk3/sdk_281.htm http://www.kumei.ne.jp/c_lang/sdk3/sdk_282.htm http://www.kumei.ne.jp/c_lang/sdk3/sdk_283.htm この辺が役に立つと思います。ちなみにネイティブDLLの叩き方はここのTipsにもありますし、わからないなら適当に探してください。 ちょっと雑談。
仮名打ち派としてそれは困ると突っ込んでおこうと思います | ||||||||||||
|
投稿日時: 2003-11-29 12:30
こんにちわ。諸農です。
ちょっと時間があったので、TextBox継承で作ってみました。 このクラスは、IMEで確定された文字のフリガナを取得して、 それをイベントとしてアプリケーションに通知します。 アプリケーションはイベントを通じてフリガナ文字を取得します。 エベントハンドラーデリゲートとイベント引数クラスは このクラス用に新規で定義しています。
このクラスをWindowsアプリケーションで使います。 以下のコードを実行すると、フォームの左上に上記で作成した フリガナ取得可能なTextBoxクラスが配置されます。 IMEを起動して、日本語文字を入力し、入力文字を確定した時点で イベントが発動されるので、イベント内でラベルにフリガナをセットしています。
こんな感じで、半角カナのフリガナを取得することが出来ます。 ではでは(^^)/ _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ |