キャレットが消せないのですが

解決


けんと  2002-12-11 06:35:33  No: 105658

ちょっと質問させてください。
リッチテキストボックスが1つあるだけのフォームがあります。
(裏側にはタイマーやコモンダイアログなどのコントロールは隠れています)
このリッチテキストボックスのキャレットをフォームがアクティブになった
とき(リッチテキストボックスにフォーカスが当たったとき)に
消したいのですが、GotFocusイベントプロシージャでHideCaretを実行する
やり方では消えてくれません。Clickに変えたりすると消えますので、
HideCaretの部分に問題はないと思うのですが。
あと、GotFocusで、文字を書かせたりしても書けますので、イベント自体は
ちゃんと動いています。何が悪いのでしょうか?
すみませんがよろしくお願いします。


たかみちえ  URL  2002-12-11 08:56:38  No: 105659

HideCaretは、選択範囲が変わったときに行わないと、
なぜかすぐに無効になってしまうようです。

  なので、GotFocusイベントではフラグをたてるだけにして、
それを見て、SelChangeイベントで、HideCaretを使ってみてください。
  ところで気づいたんですけど、
ただひたすらSelChangeでHideCaretを呼ぶだけでもいいような気がしますから、
できたらそれだけでもいいかも…。


けんと  2002-12-12 06:19:28  No: 105660

たかみちえさん、ありがとうございます。
で、SelChangeでやってみたのですが、最初の1回しか消えてくれません。
なぜでしょう??


たかみちえ  URL  2002-12-12 08:57:16  No: 105661

> SelChangeでやってみたのですが、最初の1回しか消えてくれません。
  そうですか…。わたしのときはそれでちゃんと消えたと記憶しているのですけど…。
もしかして、OSに依存していたのでしょうか?

  疑問に思ったので、Googleでさがしてみましたけど、
WM_SETFOCUS(VBのリッチエディットのGotFocusに当たると思います)で、
HideCaretを複数回使って成功した人がいるようです。
ただ、HideCaretは使用回数が蓄積されるようなので、
表示するときも、おなじ回数ShowCaretを使わないと出てこないと思いますけど。


けんと  2002-12-13 05:08:03  No: 105662

ありがとうございます。最悪なことに、開発用マシンが今日電源入らずという
状態に陥ってしまい、明日ドック入りしますので、返ってきたら試してみます。
2ヶ月間に2回の故障・・・ついてないです。


けんと  2002-12-25 04:53:29  No: 105663

PCが返ってきたので早速試してみましたが、ダメでした。
結局、タイマーを組み合わせて何とか処理できましたので
それでやってます。根本的な解決にはなってませんが・・・
ありがとうございした。


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

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






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