キャレットについて

システムは、メッセージ 待ち行列ごとに 1 つのキャレットを提供します。 ウィンドウにキャレットが作成されるのは、キーボード フォーカスがある場合、またはアクティブな場合のみです。 ウィンドウは、キーボードフォーカスを失うか非アクティブになる前にキャレットを破棄する必要があります。 キーボード入力の詳細については、「 キーボード入力」を参照してください。

CreateCaret 関数を使用して、キャレットのパラメーターを指定します。 キャレットの位置、幅、および高さで指定された四角形内のピクセルの色を反転することで、キャレットが形成されます。 幅と高さは論理単位で指定されます。したがって、キャレットの外観は、ウィンドウのマッピング モードの対象となります。

このセクションでは、次のトピックについて説明します。

キャレットの可視性

キャレットが定義されたら、 ShowCaret 関数を使用してキャレットを表示します。 キャレットが表示されると、自動的にフラッシュが開始されます。 固体キャレットを表示するために、システムは四角形内のすべてのピクセルを反転させます。灰色のキャレットを表示するには、システムは他のすべてのピクセルを反転します。ビットマップ キャレットを表示する場合、システムはビットマップの白いビットのみを反転します。

キャレットを反転するために必要な経過時間 (ミリ秒単位) は、 点滅時間と呼ばれます。 メッセージ キューを所有するスレッドにメッセージを処理するメッセージ ポンプがある限り、キャレットは点滅します。

ユーザーはコントロール パネルを使用してキャレットの点滅時間を設定でき、アプリケーションはユーザーが選択した設定を尊重する必要があります。 アプリケーションでは、 GetCaretBlinkTime 関数を使用してキャレットの点滅時間を確認できます。 ユーザーがコントロール パネル アプレットなどの点滅時間を調整できるアプリケーションを作成する場合は、SetCaretBlinkTime 関数を使用して、点滅時間のレートを指定したミリ秒に設定します。

フラッシュ時間は、キャレットのディスプレイの表示、反転、および復元に必要な経過時間 (ミリ秒単位) です。 キャレットのフラッシュ時間は点滅時間の2倍です。

キャレット位置

キャレットの位置は 、GetCaretPos 関数を使用して決定できます。 クライアント座標の位置は、 GetCaretPos のパラメーターで指定された構造体にコピーされます。 アプリケーションは 、SetCaretPos 関数を使用してウィンドウ内のキャレットを移動できます。 キャレットが既に所有されている場合にのみ、ウィンドウでキャレットを移動できます。 SetCaretPos では、キャレットが表示されているかどうかに関係なく、キャレットを移動できます。

キャレットの削除

キャレットを非表示にして一時的に削除することも、キャレットを破棄して完全に削除することもできます。 キャレットを非表示にするには、 HideCaret 関数を使用します。 これは、メッセージの処理中にアプリケーションで画面を再描画する必要があるが、キャレットを邪魔にならないようにする必要がある場合に便利です。 アプリケーションが描画を完了すると、 ShowCaret 関数を使用して再びキャレットを表示できます。 キャレットを非表示にしても、その図形が破棄されたり、挿入ポイントが無効にされたりすることはありません。 キャレットを隠すことは累積です。つまり、アプリケーションが HideCaret を 5 回呼び出す場合は、キャレットが再び表示される前に ShowCaret も 5 回呼び出す必要があります。

キャレットを画面から削除してその形状を破棄するには、 DestroyCaret 関数を使用します。 DestroyCaret は、現在のタスクに関係するウィンドウがキャレットを所有している場合にのみ、キャレットを破棄します。