ページ 11

キャレットの移動

Posted: 2013年8月05日(月) 18:56
by どぶろく
Win32APIプログラムでの質問です。
エディットコントロールでキャレット(テキストカーソル)を好きな所に移動させようと思っているのですが、出来ません。SetCaretPos()を使えば簡単だと思っていたのですが、関数を実行してもキャレットは移動しませんでした。
もしやと思いマウスをクリックして SetCaretPos()を実行するようにするとキャレットは移動しました。しかし移動するだけで入力位置は変わりませんでした。何かを入力すると元の位置に戻ってしまいます。入力位置を移動したいのですが、なかなかうまくいきません。
例えば SetWindowText()でエディットコントロールに文字列を表示して文字列の最後にキャレットを移動させたいわけです。エディットコントロールに送るメッセージの中にキャレット移動させるものがあるのかとも思って探してみたのですがありませんでした。どうか入力位置とキャレットを移動させる方法を教えて下さい。

Re: キャレットの移動

Posted: 2013年8月05日(月) 19:14
by みけCAT
どぶろく さんが書きました:エディットコントロールに送るメッセージの中にキャレット移動させるものがあるのかとも思って探してみたのですがありませんでした。
見つからなかっただけですね?

EM_SETSELメッセージでキャレットを移動させることができます。
wParamに選択開始位置を指定し、lParamに選択終了位置を指定します。
wParam==lParamにすれば、その位置にキャレットが移動するはずです。

Re: キャレットの移動

Posted: 2013年8月06日(火) 10:44
by どぶろく
ありがとうございました。無事解決しました。感謝です。
開始位置と終了位置を同じにするという発想がなかったので EM_SETSEL に気づきませんでした。