以前お世話になりました雪です。
またお力をお借りしたく質問させていただきます。
今回はタイトル通りカスタムドローについてです。
カスタムドローにより、任意の列の背景色、色の指定が出来ることは知っているのですが
(過去の質問にもありましたので)
ある列の特定の文字列のみ色を変更するといったことは可能なのでしょうか。
具体的には
|列1 |
行1 |abcdef|
行2 |abwxyz|
行3 |cba123|
とあった場合、「abc」のみ色を変更したいと考えています。
調べても確信に得るようなモノに行き着かなかったの、どうかお願いします。
環境
VS2005 MFC
この場合はコントロールの種類もかなり重要なので、それも表記して質問するほ
うがいいかと。
とりあえずは、リストボックスと仮定して進めます。
DrawText等で実際に文字を描く部分を変更すれば可能なはずです。
一回やってみるといいかと思います。
資料に関しては、
オーナードロー
オーナー描画
カスタムドロー
等複数あるようなのですが、カスタムドローと呼ぶ場合は少ないかも知れません。
単語を変えて調べてみるのもいいかと思います。
麩さん
>この場合はコントロールの種類もかなり重要なので、それも表記して質問するほ
>うがいいかと。
>とりあえずは、リストボックスと仮定して進めます。
すいませんでした。上記はリストビューについての質問です。
以後気をつけたいです。
>資料に関しては、
>オーナードロー
>オーナー描画
>カスタムドロー
>等複数あるようなのですが、カスタムドローと呼ぶ場合は少ないかも知れません。
>単語を変えて調べてみるのもいいかと思います。
もう少し仰るとおり単語を変えて調べてみます。
また、一度やってみて再度質問させていただきます。
カスタムドロー自体の機能でどうにかなる話では無いと思いますよ。
カスタムドロウは一つのアイテムの描画毎にフォントを変えたり、
テキスト色やテキストの背景色を変えたりはできますが、
これはあくまでもアイテム毎の描画のタイミングでしか変えられません。
レポート形式なら一行毎と言う話になります。
今回のように一つのアイテムの中で文字単位に変えるような事は
カスタムドローでは対応できないと思います。
これがしたければ、面倒でもオーナードローを使って全て自前で描画しないと
出来ないでしょう。
今回の例にあるような特定の文字列(abc)を色変えて描画したいような場合、
アイテムとサブアイテムそれぞれの描画時に描画する文字列の中身を確認し、
文字列の中に求める部分文字列が含まれるかを検索して含まれていたら、
その部分文字列以外とその部分文字列に分けて文字色を変えてそれぞれ描画する
という実にめんどくさい事をしないといけないはずです。
但し、オーナードローする以上、何から何まで自分で描画しないといけない為、
実際に自分がやりたい事以外の部分までコードを起こす必要があります。
そういう意味では工数の割には実りの少ない作業になるかもしれません。
カスタムドローとオーナードローは別物ですよー。
カスタムドローは描画に使う色やフォントだけカスタマイズして、描画自体は Windows
に任せます。
オーナードローは何から何までアプリで描画します。
PATIOさん
シャノンさん
回答ありがとうございます。
二つの違いを調べてみてお二人が仰ってる事が分かりました。
多少面倒ですが、オーナードローを使って描画してみます。
ありがとうございました。