選択領域の反転表示について – プログラミング – Home

選択領域の反転表示について
 
通知
すべてクリア

[解決済] 選択領域の反転表示について


Kiyo
 Kiyo
(@Kiyo)
ゲスト
結合: 13年前
投稿: 2
Topic starter  

テキストエディタやワープロでは、
文字を選択すると、その領域が反転表示されます。

WinVistaやWin7では、GetSysColorBrush(COLOR_HIGHLIGHT)などの
APIで背景色やテキストの色を取得できます。

色情報は取得できますが、これらの反転表示は実際にどのようにして
実現しているのでしょうか?

InvertRectというAPIだと背景が真っ黒になってしまいますし、
PatBlt(..., PATINVERT)などを使用して、青色のブラシを選択しても
背景が青にはなりません。つまり背景色を指定できない。

InvertRectのように同じAPIを2回作用させると元の状態に戻ってくれるのが
理想なのですが、背景色を指定する場合には、InvertRectのようなAPIで
簡単に実現することはできないのでしょうか?


引用未解決
トピックタグ
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

>InvertRectのように同じAPIを2回作用させると元の状態に戻ってくれるのが
>理想なのですが、背景色を指定する場合には、InvertRectのようなAPIで
>簡単に実現することはできないのでしょうか?

MFC、Win32APIにはありません。

「反転表示」という用語が使われますが、これは実際のプログラムの動作内容
を正確に反映しているわけではないので誤解しないようにしましょう。
実際に行われているのは「選択範囲の強調表示(=ハイライト表示)」です。
その表現方法として、濃い青色を背景にして白色で文字を表示しているだけなのです。
従って、その定義もハイライトという用語が使われていますよねぇ。

強調表示の文字の色=COLOR_HIGHLIGHTTEXT
強調表示の背景の色=COLOR_HIGHLIGHT


返信引用
Kiyo
 Kiyo
(@Kiyo)
ゲスト
結合: 13年前
投稿: 2
Topic starter  

仲澤@失業者 さん、アドバイスありがごうございました。

やはり、そんな便利なAPIはないんですね。
テキストの強調表示なんて基本動作のように思いますが。

仕方ないので、自分で実装したいと思います。
ありがとうございました。


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

>テキストの強調表示なんて基本動作のように思いますが。

この機能を実際にコードしてみれば気が付くかも知れませんが、
OSが提供できるほど簡素な機能ではありません(vv;)。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました