mfc-ml

2003年03月

29

[mfc 44416] Re: ListCtrlでSubItemのIcon箇所が反転しない

 PHOENIXです。

>0にしてもアイコンが表示できるので、なんだろなぁ?と思ってます。
SetImageList関数を実行した時点で、一番左のアイテムにはアイコンの
スペースが作られます。
また、インデックスは0~で指定するので、表示されるのでしょう。
int a[2];→a[0]、a[1]と指定するように。

>アイコンを表示したくなければ、ない値を指定すればいいんですネ。
>なるほど。
ない値…つまりは-1でも指定するといいかもしれません。
ちょっとイレギュラーな感じがしますがね。

>色で背景色が変わるのですが、アイコン部は色が抜けちゃいます。
>これを抜けないようにすることはできないのでしょうか?

アイコン部のマスク色は選択しても変わらないからですね
これはもう、自分で描画処理を入れることになりますね。

コントロールをLVS_OWNERDRAW...属性にしてOnDrawItemハンドラを入れて
自分でアイテム全体を描画するか、
WM_NOTIFYのNM_CUSTOMDRAWのイベントに応答する関数をいれて、
フォントの色、背景色などの色を変えてみたりとか。

いろいろ試してみるべし。
//------------------------------
// PHOENIX
// mail : p...@yahoo.co.jp
//
__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!  http://bb.yahoo.co.jp/
28

[mfc 44415] Re: ListCtrlでSubItemのIcon箇所が反転しない

naoya@初心者です。

PHOENIXさん、レスありがとうございます。

>上記のCreate関数を実行すると16×16のイメージが最大16個拡張できる
>イメージリストを作成します。この拡張できる個数とかは、あまり
>意味はないかも…だってSetImageCount関数でどうにでもなるし…
>リソースIDB_BITMAP1は、ビットマップなのでしょうが、サイズはいくつ
>ですか?
>それが16×16なら一つのイメージをもつイメージリストということになります。

幅96×高さ16です。
6つあるってことです。
 m_image->Create(IDB_BITMAP1, 16, 16, RGB(0xff,0xff,0xff));
16で指定してるのは特に意味なく、適当です。
0にしてもアイコンが表示できるので、なんだろなぁ?と思ってます。


>そして、InsertItemやSetItem関数で、iImageは、0~2で指定します。
>3~を指定しても背景色で塗りつぶされるだけです。

アイコンを表示したくなければ、ない値を指定すればいいんですネ。
なるほど。


>また、マスクの色は、透過色として扱います。
>
>透過色(抜き色)を指定したくないなら
>m_image->SetBkColor(RGB(rr,gg,bb));
>でどうですか? (透過色がなくなると思います)

例えば青でマスクしたとすると、
アイコンで青が使われている箇所が背景色で表示されるということですよネ。
それはいいのですが、行選択した場合、テキストだったら COLOR_HIGHLIGHT の
色で背景色が変わるのですが、アイコン部は色が抜けちゃいます。
これを抜けないようにすることはできないのでしょうか?

行選択したらサブアイテムのアイコンを抜くとか仕掛けすれば
それっぽくなるのかな?!


引き続きアドバイスをお願いします。
では。
28

[mfc 44414] Re: ListCtrlでSubItemのIcon箇所が反転しない

>naoya@初心者です。
>
 PHOENIXです。

>リストコントロールをまだいじってます。
>
>えっと、レポート表示において、サブアイテムにアイコンを表示したのですが、
>1行選択にしたところ、アイコンの箇所がクリックしても色抜けしちゃいます。
>
以下のコードのままですね?
>>m_image = new CImageList;
>>m_image->Create(IDB_BITMAP1, 16, 16, RGB(0xff,0xff,0xff));
>>m_list->SetImageList(m_image, LVSIL_SMALL );

上記のCreate関数を実行すると16×16のイメージが最大16個拡張できる
イメージリストを作成します。この拡張できる個数とかは、あまり
意味はないかも…だってSetImageCount関数でどうにでもなるし…
リソースIDB_BITMAP1は、ビットマップなのでしょうが、サイズはいくつ
ですか?
それが16×16なら一つのイメージをもつイメージリストということになります。

上記のコードでCListCtrlに表示したいアイコンが全部で例えば、
3つある場合はリソースのビットマップを、
幅48×高さ16にして、16×16のイメージを3つ並べた感じにします。
そして、InsertItemやSetItem関数で、iImageは、0~2で指定します。
3~を指定しても背景色で塗りつぶされるだけです。

また、マスクの色は、透過色として扱います。

透過色(抜き色)を指定したくないなら
m_image->SetBkColor(RGB(rr,gg,bb));
でどうですか? (透過色がなくなると思います)

#はずしてたらごめんなさい
#間違ってたらもっとごめんなさい(フォローお願いしまふ ^^;)
#ちなみに私の環境は VC++ 6.0
//------------------------------
// PHOENIX
// mail : p...@yahoo.co.jp
//
__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!  http://bb.yahoo.co.jp/
27

[mfc 44413] Re:UNIXサーバーでのFTP

こなです。

GetFtpConnection()が失敗する理由はものすごくたくさんあります。
これだけでは、何ともいえません。

ポート番号が違うかもしれないし、パスワードを間違えたかもしれない。
接続拒否をされたかもしれないし、そもそも相手方サーバが落ちているかもしれ
ない。などなど。

MSDNに以下のような文があります。
> 戻り値

> CFtpConnection オブジェクトへのポインタ。呼び出しに失敗した場合、スローされた
> CInternetException オブジェクトを調査することによって、失敗の原因を調査できます。
まずは、TRY/CATCHして、CInternetExceptionを調査してみましょう。

-- 
こな <k...@yahoo.co.jp>
27

[mfc 44412] ListCtrlでSubItemのIcon箇所が反転しない

naoya@初心者です。

リストコントロールをまだいじってます。

えっと、レポート表示において、サブアイテムにアイコンを表示したのですが、
1行選択にしたところ、アイコンの箇所がクリックしても色抜けしちゃいます。

イメージリストのCreateでマスク値をいじるとうっすらと色がつくのですが、
きちんと色をつけることはできないのでしょうか?
また、コントロールからフォーカスがはなれると色はぬけちゃいます。

備考)
背景色     :白
アイコンの背景色:白

マスク値を RGB(255,255,255) にするとすけすけ。
      RGB(  0,  0,  0) にするとアイコンの黒が抜けてしまう。
      RGB(  0,128,128) とかにするとうっすら色付く。


OS:Windows2000SP3
VC:VC++.NET


以上ですが、何かアドバイスがあれば宜しくお願いします。
記事検索
Amazon.co.jp
  • ライブドアブログ