![]()
実行ファイルに使われているアイコンを取得したい場合はSHGetFileInfoを利用すると楽だ。この関数は第5引数に指定するフラグによってさまざまな情報をファイルから取り出せる。利用する前にMSDNライブラリでチェックするといいだろう。アイコン(HICON)は使い終わったらDestroyIconで破棄する必要がある。
ここではSHGetFileInfoで取得したレジストリエディタのアイコンをデスクトップ上に並べて描画した。
#include "shellapi.h"
bool Test(void)
{
HDC hDC;
HICON hIcon;
SHFILEINFO sShFileInfo;
//アイコンの読み込み
::ZeroMemory(&sShFileInfo,sizeof(SHFILEINFO));
::SHGetFileInfo(_T("c:\\windows\\regedit.exe"),0,&sShFileInfo,sizeof(SHFILEINFO),SHGFI_ICON | SHGFI_LARGEICON);
hIcon = sShFileInfo.hIcon;
if(hIcon == NULL)
return false;
//描画用DC取得
hDC = ::GetDC(NULL);
//描画
{
int i;
for(i = 0; i < 10; i++)
::DrawIcon(hDC,100 + i*30,100,hIcon);
}
//描画用DCの破棄
::ReleaseDC(NULL,hDC);
//アイコンの破棄
::DestroyIcon(hIcon);
return true;
}
