システムアイコンというかエクスプローラなどで使われるフォルダとかファイルのアイコンです。
WindowsAPIのSHGetFileInfo関数を使えばよいようです。
MFCで取得したアイコンをCImageListに登録することを想定しますが、HICONが帰ってくるので何にでも使えるはずです。
CImageList iconlist;
SHFILEINFO sfi;
// CImageListはコンストラクタだけでなくCreateが必要。
// 32,32は大きさ。小さなアイコンは16x16、大きなアイコンは48x48?
// ILC_COLOR8は256色、ILC_MASKは透明色を設定。COLOR系は他に無印(4bit?)、16,24,32などがあるみたい
// 最後の2パラメータは最初に確保する登録数,拡張するときに幾つずつ増やすかの指定
iconlist.Create(32,32,ILC_COLOR8|ILC_MASK,0,1);
// リストの背景色を白に設定。何故かこれをやらないと黒い縁が出ることあり
iconlist.SetBkColor(RGB(255, 255, 255));
// アイコンを取得
// これはフォルダの場合。最初のパラメタをSHGetFileInfo(_T("*.wav"),0,…などとすれば
// wavファイル用のアイコンが取得可
// 最後のフラグは
// 小さなアイコンを取得するときはSHGFI_SMALLICON
// フォルダなどが開いたアイコンを取得するときはSHGFI_OPENICON
// をさらにorする。いずれにしても以下の2つは必要
// 返り値は成功なら0以外、失敗なら0
SHGetFileInfo(_T(""),FILE_ATTRIBUTE_DIRECTORY,&sfi,sizeof(SHFILEINFO),SHGFI_ICON|SHGFI_USEFILEATTRIBUTES);
// 取得したアイコンを登録
iconlist.Add(sfi.hIcon);
2007-05-17 10:50:27[プログラミング]
この記事へのトラックバックURL: https://www.asmusic.jp/ASHARD/score/tb.cgi/yu-oishi/20070516_1
手動トラックバック