実行ファイルのアイコンを取得して描画する

test59.gif
実行ファイルに使われているアイコンを取得したい場合は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;
}

プロジェクトファイルをダウンロード


カテゴリー「画像処理」 のエントリー