なんでスタティックかというと、拡張子 -> システムアイコンリストのインデックスなんて
いう map はシステムで1個あればよいものだから。シングルトンにするほどのものでも
ないし。

インデックスは連番じゃなくて、
SHFILEINFO fileinfo;
::SHGetFileInfo( ext.c_str(), NULL, &fileinfo,
 sizeof(fileinfo),SHGFI_USEFILEATTRIBUTES | SHGFI_ICON | SHGFI_SMALLICON );
return fileinfo.iIcon;
こんな感じで得られる。

ところで、40 はこんなことろでグダグダ質問してないで、C++ とか C を勉強したほうがいいよ。
こうやって人に聞くことには何の意味もないよ。