HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0226
ヒビノ氏独自IME?について3解決


ヒビノ氏

リンク

2016/2/26(Fri) 23:32:57|NO.74712

こんにちは。

input命令等で決まったGUIではなくもう少し見た目をカスタマイズしたもので文字入力ができたら、
と思いまして調べたらこちら【http://hsp.tv/play/pforum.php?mode=pastwch&num=15624
を見つけました。

最初に提示されているスクリプトがかなり理想に近いものだったのですが気になる点がありまして、
・なぜ全角入力にしか対応していないのか
・returnキーで変換を確定させると文字が消えてしまう

以上の二つがどうしても自力で解明できませんでした。
どうかご助力お願いいたします。



この記事に返信する


ヒラギノ

リンク

2016/2/27(Sat) 00:40:50|NO.74713

以前あなたと同じことをしようと思って失敗した者です。。。

>・なぜ全角入力にしか対応していないのか
ime_getstr は、IME が開かれている場合のみ入力中の文字を取得する命令だからだと思います。

>・returnキーで変換を確定させると文字が消えてしまう
同上の理由です。
このスクリプト中の buf の内容を別の変数に写し取って、86 行目のbuf の代わりに変数を指定すれば良いと思います。



掘木

リンク

2016/2/27(Sat) 09:33:28|NO.74714

確定文字を拾うだけならIMEは放置でいいです。

WM_CHAR(0x0102)をジャックしましょう。これだけで確定結果の文字列が拾えますよ。
ただし、ワイド文字列を受け取ると1バイトずつ切れて送られるので結合が必要ですし、
IMEの文字列の最後として何か来るわけでもなさそうなので表示のタイミングに気を使うことになります。。

その対策としてワイド文字列だけWM_IME_CHARで拾えば表示タイミングに気を使わなくてもいい。
ただし、メッセージの呼応として0を返さないとWM_CHARに分解されて送られるので注意や。
(なーんかXP環境だとWM_IME_CHARって何やってもWM_CHARに分解されたような覚えもあるんだが勘違いかなあ…?)
なにやら.NETの仕様らしい?よくわからんけーど。


#const global WM_CHAR 0x0102 #const global WM_IME_CHAR 0x286 oncmd gosub *charinput,WM_CHAR oncmd gosub *charime,WM_IME_CHAR sdim strbuf,64 stop *charinput if ( wparam == 0x0d ){ // Returnによる改行 gosub *string_cl return 0 } memexpand strbuf,strbufusing+4 poke strbuf,strbufusing,wparam poke strbuf,strbufusing+1,0 strbufusing += 1 gosub *string_dirty mes wparam return 0 *charime if ( wparam < 255 ){ sendmsg hwnd,WM_CHAR,wparam,lparam return 0 } memexpand strbuf,strbufusing+4 poke strbuf,strbufusing,wparam>>8 poke strbuf,strbufusing+1,wparam poke strbuf,strbufusing+2,0 strbufusing += 2 gosub *string_dirty return 0 *string_dirty color 255,255,255 boxf 0,ypos color pos 0,ypos mes strbuf return *string_cl ypos += 16 strbuf = "" gosub *string_dirty return

昔こんなスレッドに返答したっけな。
自作インプットなら参考になるかも?
http://hsp.tv/play/pforum.php?mode=pastwch&num=58706
IMEの制御なんてしてないけど。



ヒビノ氏

リンク

2016/2/28(Sun) 11:56:41|NO.74728

ヒラギノさん、
IME入力中の文字しか表示してなかったんですね。納得です。

堀木さん
WM_CHARで制御できるんですね。リンク先大変参考になります、いろいろいじって試してみます。

お二人ともありがとうございます!



ONION software Copyright 1997-2021(c) All rights reserved.