開発環境
DelphiXE2 Pro Windows8 Pro 64Bit
ふりがなを自動的に取得する為に、CustumEditを作成していますが、
動作に不満があります・・・
WM_IME_ENDCOMPOSITIONでふりがな文字列を取得しているわけですが、
これだと、確定時にEnterキー等を明示的に押下しなければ、取得できません。
例えば、「東京都葛飾区」と入力する際に、「とうきょうと」で一端変換、Enterキーを
押さずに「かつしかく」と続けて入力してEnterキーを押した場合、取得できるのは「カツシカク」
となってしまいます。(WM_IME_ENDCOMPOSITIONが来ないので当然ですが・・・)
途中途中変換しつつ、連続で入力しても ふりがなを取得するにはどうしたら良いでしょう?
よろしくお願いいたします。
*****************************************************************************************
procedure TFuriganaEdit.WndProc(var Msg: TMessage);
var
imc: HIMC;
strKana: string;
nSize: Integer;
begin
if (FKanaOut <> nil) then
begin
if (Msg.Msg = WM_IME_ENDCOMPOSITION) then
begin
imc := ImmGetContext(Handle);
case Msg.Msg of
WM_IME_ENDCOMPOSITION:
begin
strKana := '';
nSize := ImmGetCompositionString(imc, GCS_RESULTREADSTR, nil, 0);
nSize := nSize div 2;
SetLength(StrKana, nSize + 1);
ImmGetCompositionString(IMC,GCS_RESULTREADSTR, PChar(StrKana), nSize*2+2);
SetLength(StrKana, nSize);
FKanaOut.Text := FKanaOut.Text + strKana;
end;
end;
ImmReleaseContext(Handle, imc);
end;
end;
inherited;
end;
Delphi 関連書籍
http://ht-deko.minim.ne.jp/delphiforum/?vasthtmlaction=viewtopic&t=46
の大野さんの「Delphi 3 Q&A 150 選」にある「ヨミガナの取得」
(Delphi2用のヘルプファイルに記載されてたかも・・)
の方法では、ダメですか?
igyさん こんばんは
できました。
(Msg.LParam and GCS_RESULTREADSTR) <> 0)があると大丈夫なんですね。
ありがとうございました。m(_ _)m
procedure TFuriganaEdit.WndProc(var Msg: TMessage);
var
imc: HIMC;
strKana: string;
nSize: Integer;
begin
if (FKanaOut <> nil) then begin
imc := ImmGetContext(Handle);
if (Msg.Msg = WM_IME_COMPOSITION) and ((Msg.LParam and GCS_RESULTREADSTR) <> 0) then begin
strKana := '';
nSize := ImmGetCompositionString(imc, GCS_RESULTREADSTR, nil, 0);
nSize := nSize div 2;
SetLength(StrKana, nSize + 1);
ImmGetCompositionString(IMC,GCS_RESULTREADSTR, PChar(StrKana), nSize*2+2);
SetLength(StrKana, nSize);
FKanaOut.Text := FKanaOut.Text + strKana;
end;
ImmReleaseContext(Handle, imc);
end;
inherited;
end;
>(Msg.LParam and GCS_RESULTREADSTR) <> 0)があると大丈夫なんですね。
ぢゃないですね・・・(そもそもandでつないであるし・・・)
余分なCASEをとるだけでOKってことですね・・・(^^;
ちゃんと動くし・・・
どこで間違えた・・・orz
ツイート | ![]() |