テキストボックスのカーソル位置(何桁目か)を取得するには?


つぶマン  2007-05-11 19:34:28  No: 65121

VS2005 VC++ Win32で
テキストボックス(エディットコントロール?)
とスクロールバーの連動をさせようとしています。

ほぼすべての連動ができたのですが、
あと1つだけできません;;
「カーソルが右へ動いて、
  テキストが右へスクロールしたとき、
  それに合わせてスクロールバーのつまみを移動させる」です。

おそらく、テキストボックスのカーソル位置(何桁目か)が
取得できれば実現できると思ったのでこのようなタイトルにしました。

なにか良い方法をご存知の方いらっしゃいませんでしょうか?


シャノン  2007-05-11 20:12:40  No: 65122

試してないので、うまくいかなかったらゴメンナサイ。

1. エディットボックスにフォーカスがあることを確認する。
2. GetCaretPosで、カーソルの位置を取得する(入力カーソルは、正しくは「キャレット」といいます)。
3. EM_CHARFROMPOSで、xy座標から文字の位置を取得する。

でどうでしょう?


つぶマン  2007-05-12 05:18:13  No: 65123

レスありがとうございます。
「キャレット」と呼ぶんですか。勉強になります!

>>1. エディットボックスにフォーカスがあることを確認する。
>>2. GetCaretPosで、カーソルの位置を取得する(入力カーソルは、正しく>>は「キャレット」といいます)。
>>3. EM_CHARFROMPOSで、xy座標から文字の位置を取得する。

上記の方法を試してみましたが、
EM_CHARFROMPOSで取得できるのは

  行
  先頭文字からキャレットまでのバイト数

のようでした。
これではキャレットの行の何桁目にいるのかはわからないようです;;
でもこれと何かを組み合わせたらできるのかもしれませんね!
引き続き調査いたします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加