掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
キャレットの作成と廃棄のタイミングは? (ID:69856)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
まず、キャレット(カレット)はメッセージキューに対して1つ作成 できるので、複数のキャレットが同時に存在するのは当たり前です。 2つ以上のキャレットが同時に表示されると、UI上好ましくないと いうだけのことです。また、これはフォーカスの有り無しとも無関係に 作成破棄できてしまいます。従って、キャレットを保持する アプリケーションは、Windowsの指針に従って 1.フォーカスを失ったとき。 2.アクティブでなくなったとき。 の両タイミング時にキャレットを「非表示」にすべきです。 次に、キャレットの破棄タイミングは、本来的には 1.そのキャレットを使用している当該のメッセージキューが 最後のメッセージを受け取る直前。 が理想的ですが、実際にはウインドウクラス自体は破棄されないため (破棄を確認できないため)、当該のメッセージを利用しているHWND 毎に、作成、破棄を行うしかありません。結果的に WM_DESTROYを受け取った瞬間ということになると思います。 さて、フォーカスの喪失もアクティブの喪失も通知されないまま 他のウインドウがキャレットの表示を開始した場合は、どの様に するべきかは意見が分かれるところだと思いますが、自分は 1.カレットは複数存在する場合がありえる という立場から「何もすべきではない」と考えます。 参考になれば幸いです。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.