フリガナを取得する方法 – プログラミング – Home

フリガナを取得する方法
 
通知
すべてクリア

[解決済] フリガナを取得する方法


クリリン
 クリリン
(@クリリン)
ゲスト
結合: 23年前
投稿: 175
Topic starter  

どうも、クリリンです。
環境は、Win2000 Pro(SP2),VC++6.0(SP5),MFCです。

現在、あるAというエディットボックスにIMEモードで入力したら、Bというエディットボッ
クスに半角のフリガナを自動的に代入する…といった事がしたいのですが、どうしたら制御でき
るのでしょうか?(ちなみに、IMEのモード切替等は出来ています。)

まず、そのこと事について、猫でもわかるプログラミングで、調べました。
http://www.kumei.ne.jp/c_lang/sdk3/sdk_281.htm
そこで2つ質問があります。

1つ目:
このページの「WM_IME_COMPOSITIONメッセージを捕まえたら…」とありますが、
エディトボックスに「WM_IME_COMPOSITION」のメッセージを追加するにはどうしたらいいのでしょう
か?(もし、サブクラス化とか等で有れば、具体的に教えて欲しいのですが・・・)
2つ目:
「ImmGetCompositionString」の引数「dwIndex」のパラメータはどれを使用したら半角のカ
タカナが取得できるのでしょうか?ヘルプを見る限りなさそうな気がするのですが・・・(私の
英語の読解力が足りないのかもしれませんが・・・)

お手数ですが、皆様、よろしくお願いします。


引用未解決
トピックタグ
不良PG
 不良PG
(@不良PG)
ゲスト
結合: 23年前
投稿: 188
 

>このページの「WM_IME_COMPOSITIONメッセージを捕まえたら…」とありますが、
>エディトボックスに「WM_IME_COMPOSITION」のメッセージを追加するにはどうしたらいいの
>でしょう
>か?(もし、サブクラス化とか等で有れば、具体的に教えて欲しいのですが・・・)
ON_MESSAGEを調べましょう

>「ImmGetCompositionString」の引数「dwIndex」のパラメータはどれを使用したら半角のカ
>タカナが取得できるのでしょうか?ヘルプを見る限りなさそうな気がするのですが・・・(私
>の英語の読解力が足りないのかもしれませんが・・・)

http://www.geocities.co.jp/SiliconValley-Oakland/1865/
ここにそのままのサンプルがありました


返信引用
クリリン
 クリリン
(@クリリン)
ゲスト
結合: 23年前
投稿: 175
Topic starter  

不良PGさんありがとうございます。

http://www.geocities.co.jp/SiliconValley-Oakland/1865/
ここを見る限り、質問1は必要がないみたいですね。
とりあえず、解決です。

ただ、私の質問が不足していたと思うのですが、
エディトボックスに「WM_IME_COMPOSITION」のメッセージを追加したたかったのです。
もしかしてと思い、
ON_MESSAGE( WM_IME_COMPOSITION, OnImeComposition )
としていたのですが、これだと、エディットボックスが「WM_IME_COMPOSITION」を受取れない
と思うのですが・・・

どうなのでしょうか?


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

> ON_MESSAGE( WM_IME_COMPOSITION, OnImeComposition )
>
これをどのクラスのメッセージマップに追加すべきか、ということになると思うのですが...


返信引用
クリリン
 クリリン
(@クリリン)
ゲスト
結合: 23年前
投稿: 175
Topic starter  

例えば、CHogeDlgというダイアログクラスに

BEGIN_MESSAGE_MAP(CHogeDlg, CDialog)
//{{AFX_MSG_MAP(CHogeDlg)
ON_EN_SETFOCUS(IDS_NAME, OnSetfocusName)
ON_EN_SETFOCUS(IDS_KANA, OnSetfocusKana)
ON_EN_UPDATE(IDS_NAME, OnUpdateName)
ON_MESSAGE(WM_IME_COMPOSITION, OnImeComposition) <--ここに追加
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

とメッセージマップに追加すると言う事でしょうか?
実際には、「IDS_NAME」がメッセージを受取る・・・事がしたいのですが・・・

とりあえず、解決にチェックしておきます。


返信引用
不良PG
 不良PG
(@不良PG)
ゲスト
結合: 23年前
投稿: 188
 

対象のエディットボックスのクラス(無ければ派生させて作成)にメッセージマップを
書きましょう。

ダイアログの場合は、クラスウィザードからエディットボックス用のメンバ変数をコントロール
として追加してCEditを派生クラスのCEdit???に変更すれば勝手にサブクラスしてくれます。


返信引用
クリリン
 クリリン
(@クリリン)
ゲスト
結合: 23年前
投稿: 175
Topic starter  

ありがとうございます。
頑張ってみます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました