Win32APIプログラムでの質問です。
エディットコントロールでキャレット(テキストカーソル)を好きな所に移動させようと思っているのですが、出来ません。SetCaretPos()を使えば簡単だと思っていたのですが、関数を実行してもキャレットは移動しませんでした。
もしやと思いマウスをクリックして SetCaretPos()を実行するようにするとキャレットは移動しました。しかし移動するだけで入力位置は変わりませんでした。何かを入力すると元の位置に戻ってしまいます。入力位置を移動したいのですが、なかなかうまくいきません。
例えば SetWindowText()でエディットコントロールに文字列を表示して文字列の最後にキャレットを移動させたいわけです。エディットコントロールに送るメッセージの中にキャレット移動させるものがあるのかとも思って探してみたのですがありませんでした。どうか入力位置とキャレットを移動させる方法を教えて下さい。
キャレットの移動
Re: キャレットの移動
見つからなかっただけですね?どぶろく さんが書きました:エディットコントロールに送るメッセージの中にキャレット移動させるものがあるのかとも思って探してみたのですがありませんでした。
EM_SETSELメッセージでキャレットを移動させることができます。
wParamに選択開始位置を指定し、lParamに選択終了位置を指定します。
wParam==lParamにすれば、その位置にキャレットが移動するはずです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: キャレットの移動
ありがとうございました。無事解決しました。感謝です。
開始位置と終了位置を同じにするという発想がなかったので EM_SETSEL に気づきませんでした。
開始位置と終了位置を同じにするという発想がなかったので EM_SETSEL に気づきませんでした。