yuki_endoの日記

2005-06-25 土

[]アイコン 20:19

アイコンの取得に時間がかかるかどうか判定する方法を見つけた。

IShellIcon::GetIconOfでIExtractIcon::GetIconLocationの

パラメーターを使うというもの。

MSDNには記載されていないので邪道かもしれない。


int icon;
IShellIcon* si;
hr = sf->QueryInterface(IID_IShellIcon, (void**)&si);
if (hr == S_OK) {
  // ここでGIL_ASYNCを使うのがミソ
  switch (si->GetIconOf(fi->_il, GIL_ASYNC, &icon)) {
  case NOERROR:
    // アイコンを速く取得できた場合
    break;
  case E_PENDING:
    // アイコンの取得が遅い場合
    // この場合imageは未定義のindexが代入されている
    break;
  case S_FALSE:
    // 取得できない場合がある
    break;
  }
} else {
  // IShellIcon*が取得できない場合がある。
}

トラックバック - http://d.hatena.ne.jp/yuki_endo/20050625/1119698399