テキストエディタやワープロでは、
文字を選択すると、その領域が反転表示されます。
WinVistaやWin7では、GetSysColorBrush(COLOR_HIGHLIGHT)などの
APIで背景色やテキストの色を取得できます。
色情報は取得できますが、これらの反転表示は実際にどのようにして
実現しているのでしょうか?
InvertRectというAPIだと背景が真っ黒になってしまいますし、
PatBlt(..., PATINVERT)などを使用して、青色のブラシを選択しても
背景が青にはなりません。つまり背景色を指定できない。
InvertRectのように同じAPIを2回作用させると元の状態に戻ってくれるのが
理想なのですが、背景色を指定する場合には、InvertRectのようなAPIで
簡単に実現することはできないのでしょうか?
>InvertRectのように同じAPIを2回作用させると元の状態に戻ってくれるのが
>理想なのですが、背景色を指定する場合には、InvertRectのようなAPIで
>簡単に実現することはできないのでしょうか?
MFC、Win32APIにはありません。
「反転表示」という用語が使われますが、これは実際のプログラムの動作内容
を正確に反映しているわけではないので誤解しないようにしましょう。
実際に行われているのは「選択範囲の強調表示(=ハイライト表示)」です。
その表現方法として、濃い青色を背景にして白色で文字を表示しているだけなのです。
従って、その定義もハイライトという用語が使われていますよねぇ。
強調表示の文字の色=COLOR_HIGHLIGHTTEXT
強調表示の背景の色=COLOR_HIGHLIGHT
仲澤@失業者 さん、アドバイスありがごうございました。
やはり、そんな便利なAPIはないんですね。
テキストの強調表示なんて基本動作のように思いますが。
仕方ないので、自分で実装したいと思います。
ありがとうございました。
>テキストの強調表示なんて基本動作のように思いますが。
この機能を実際にコードしてみれば気が付くかも知れませんが、
OSが提供できるほど簡素な機能ではありません(vv;)。