フリーソフト

« [BCB] Windowsのシステムディレクトリを取得 | トップページ | [BCB] マウスが接続されているか調べる »

[BCB] ListViewに32bitアイコンを表示

BCB6.0では、ListViewなどにWindows XPで使用される32bitアイコン(アルファチャンネルを持つ半透明アイコン)を表示しようとすると、アルファがうまく反映されず、アイコンのふちが黒くなって表示されてしまいます。これを解決する方法です。

まず、ImageListを32bitに変更します。例えばFormCreateなどに次のようなコードを書いておきます。

void __fastcall TForm1::FormCreate(TObject *Sender)
{            
  UINT Flags=ILC_COLOR32;
  if (ImageList1->Masked) Flags|=ILC_MASK;
  ImageList1->Handle = (int)ImageList_Create(Width, Height, Flags, 0, ImageList1->AllocBy);
}

次に、manifestファイルを作成します。書き方はこちらを参照してください。
以上です。

BCB6.0、XP環境において、ImageListに32bitアイコンを追加していき、ListViewに表示したところ正常に表示されました。

« [BCB] Windowsのシステムディレクトリを取得 | トップページ | [BCB] マウスが接続されているか調べる »

C++Builder」カテゴリの記事

TListView」カテゴリの記事