Добрый день.
При реализации интерфейса 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;
}
Скорее всего, я неправильно задаю параметры колонки.