トップページ > 記事閲覧
GetKeyInputCursorPosition()で取得できるカーソル位置について
名前:あっぷる 日時: 2021/07/14 13:40

いつもお世話になっております 以下の操作を行うとGetKeyInputCursorPosition()で取得できるカーソル位置が文字列の最後に移動してしまいます カーソル位置は入力している位置からインクリメントするような動作がよいのですが、どうすればよいでしょうか? GetKeyInputString()等を使用した文字列入力処理を書く 適当に文字を入力する("|"はカーソル) [abcdefg|] ↓ カーソルを文字列真ん中辺に移動させる [abc|defg] ↓ 入力モードを全角にして漢字変換して変換を確定させる [abc漢字|defg] ↓ 入力モードを半角にもどして半角文字"a"を入力する ↓ カーソル位置が文字列の最後に移動してそこに先ほど入力した半角文字が挿入されてしまう [abc漢字defga|] カーソル位置はGetKeyInputCursorPosition()で取得しています 途中で漢字変換をしなければ問題ないようです 対策方法などありましたら教えていただけると助かります よろしくお願い致します
メンテ

Page: 1 |

Re: GetKeyInputCursorPosition()で取得できるカーソル位置について ( No.1 )
名前:管理人 日時:2021/07/15 00:30

GetKeyInputCursorPosition はカーソルの位置を文字のバイト単位で返すので、 デフォルトのシフトJIS文字コードの場合は全角文字は1文字2バイトなので、 それが原因でカーソルの位置が正しく処理できていないのではないでしょうか? <例> [abcdefg|] GetKeyInputCursorPosition の戻り値 7 [abc|defg] GetKeyInputCursorPosition の戻り値 3 [abc漢字|defg] GetKeyInputCursorPosition の戻り値 7 [abc漢字defg文字|] GetKeyInputCursorPosition の戻り値 15 半角文字は1文字1バイト、全角文字は1文字2バイトとして扱ってみてください m(_ _)m
メンテ
Re: GetKeyInputCursorPosition()で取得できるカーソル位置について ( No.2 )
名前:あっぷる 日時:2021/07/15 12:05

管理人様、ご回答ありがとうございます 先ほど原因がわかりました 途中でSetKeyInputString()を実行するとカーソルが文字列の最後に移動するのが現象の理由でした お手数お掛け致しました
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存