> 2009/06/11 (木) 20:28:47 ◆ ▼ ◇ [qwerty]> > そうしてるんだよ(;´Д`)タスクスケジューラだけカラム情報大嘘返してきてどうしようもない
> CODEを貼るがよい
これで判るかな(;´Д`)カラム情報列挙のとこだkが
HRESULT hr2,hr3,hr4;
CHeaderCtrl* hc = listCtrl.GetHeaderCtrl();
LOGFONT lf;
CFont* cf = hc->GetFont();
cf->GetLogFont( &lf );
int charsize = abs(lf.lfHeight);
m_ci.clear();
//TCHAR buf[MAX_PATH];
hr2 = S_OK;
DWORD rev = 0;
ULONG sort,disp;
hr2 = pCurFolder->GetDefaultColumn(rev, &sort, &disp);
if ( hr2 == S_OK )
{
//TRACE2("GetDefaultColumn %d :%d\n",sort, disp);
}
bool bSCID = false, bColWidth = false, bColState = false;
for( int i = 0; i < 10; i++ )
{
ColumnInfo ci;
memset(&ci.scid, 0, sizeof(ci.scid));
ci.csFlags = 0;//SHCOLSTATE_TYPE_STR|SHCOLSTATE_ONBYDEFAULT;
ci.fmt = 0;
ci.width = 120;
ci.name.Empty();
ci.num = i;
hr2 = pCurFolder->MapColumnToSCID(i,&ci.scid);
if( hr2 == S_OK )
{
bSCID = true;
//TRACE1("%2d :",ci.scid.pid);
}
SHELLDETAILS sd;
hr3 = pCurFolder->GetDetailsOf(NULL,i,&sd);
if( hr3 == S_OK )
{
ci.fmt = sd.fmt;
ci.width = sd.cxChar*charsize/2;
StrRetToBuf(&sd.str,NULL,ci.name.GetBuffer(MAX_PATH),MAX_PATH);
bColWidth = true;
//TRACE1("w:%03d ", ci.width );
//OutputDebugString( ci.name );
//TRACE0("\t\t");
}
hr4 = pCurFolder->GetDefaultColumnState(i,&ci.csFlags);
if( hr4 == S_OK )
{
if( bSCID && hr2 != S_OK )
{
break;
}
bColState = true;
if( ci.csFlags & SHCOLSTATE_ONBYDEFAULT )
{
TRACE1(" flag:%x ", ci.csFlags );
m_ci.push_back(ci);
}
}
else
{
// TRACE0(" false " );
if( hr2 == S_OK || hr3 == S_OK )
{
m_ci.push_back(ci);
}
}
if( hr2 != S_OK && hr3 != S_OK && hr4 != S_OK )
{
//TRACE("end:%02d\n", i );
break;
}
// TRACE0("\n");
}
参考:2009/06/11(木)20時27分14秒