>  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秒