キャレットの移動

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
どぶろく
記事: 75
登録日時: 11年前

キャレットの移動

#1

投稿記事 by どぶろく » 10年前

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

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: キャレットの移動

#2

投稿記事 by みけCAT » 10年前

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

EM_SETSELメッセージでキャレットを移動させることができます。
wParamに選択開始位置を指定し、lParamに選択終了位置を指定します。
wParam==lParamにすれば、その位置にキャレットが移動するはずです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

どぶろく
記事: 75
登録日時: 11年前

Re: キャレットの移動

#3

投稿記事 by どぶろく » 10年前

ありがとうございました。無事解決しました。感謝です。
開始位置と終了位置を同じにするという発想がなかったので EM_SETSEL に気づきませんでした。

閉鎖

“C言語何でも質問掲示板” へ戻る