IColumnProvider - обработка оффлайновых файлов
От: Chipy  
Дата: 27.08.05 12:38
Оценка:
Добрый день.

При реализации интерфейса IColumnProvider столкнулся с проблемой.
При открытии каталога, содержащего файлы с аттрибутом FILE_ATTRIBUTE_OFFLINE, не вызывается метод GetItemData для этих файлов. Для всех остальных файлов/каталогов, все ОК.

Может кто-нибудь встречался с этой проблемой? Ни в МСДН ни в Инете ничего по этому поводу не нашел.

Вот кусок кода:

HRESULT CShlExt::GetColumnInfo(DWORD dwIndex, SHCOLUMNINFO *psci)
{
  if(dwIndex > 0)
    return S_FALSE;
  switch(dwIndex)
  {
  case 0: // file state
    psci->scid.fmtid = *_Module.pguidVer;
    psci->scid.pid   = 0;
    psci->vt         = VT_BSTR;
    psci->fmt        = LVCFMT_LEFT;
    psci->cChars     = 32;
    psci->csFlags    = SHCOLSTATE_TYPE_STR | SHCOLSTATE_ONBYDEFAULT | SHCOLSTATE_EXTENDED;

    lstrcpynW(psci->wszTitle, L"State", MAX_COLUMN_NAME_LEN);
    lstrcpynW(psci->wszDescription, L"File state", MAX_COLUMN_DESC_LEN);
    break;
  DEFAULT_UNREACHABLE;
  }
  return S_OK;
}

HRESULT CShlExt::GetItemData(LPCSHCOLUMNID psci, LPCSHCOLUMNDATA pscd, VARIANT *pVarData)
{
  LPCTSTR                   pszStatusText;

  if((psci->fmtid != *_Module.pguidVer)||(psci->pid > 0)
    return S_FALSE;

  if(pscd->dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
    return S_FALSE;

  switch(psci->pid)
  {
  case 0: // file state
    V_VT(pVarData) = VT_BSTR;
    .
    .
    .
    V_BSTR(pVarData) = W2BSTR(pszStatusText);
    break;
  return S_OK;
}


Скорее всего, я неправильно задаю параметры колонки.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.