|
// *********************************************************
// リストビューに列挙
// 戻り値 : 成功 true, 失敗 false
// *********************************************************
BOOL LboxUnzip::Enum( LboxListview *Lview, LboxString *LWildName )
{
return LboxUnzip::Enum(
Lview,
LWildName->szLboxString
);
}
BOOL LboxUnzip::Enum( LboxListview *Lview, LPTSTR szWildName )
{
if ( LboxUnzip::lib == NULL ) {
this->ErrMessage.operator = (
"Unzip32.dll がインストールされていません"
);
return false;
}
if ( LboxUnzip::hArc == NULL ) {
this->ErrMessage.operator = (
"書庫が開かれていません"
);
return false;
}
Lview->Initialize();
Lview->AddColumn( LVCFMT_LEFT, 100, "" );
Lview->AddColumn( LVCFMT_LEFT, 100, "ファイル名" );
Lview->AddColumn( LVCFMT_LEFT, 100, "サイズ" );
Lview->AddColumn( LVCFMT_LEFT, 100, "圧縮サイズ" );
Lview->AddColumn( LVCFMT_LEFT, 100, "圧縮率" );
Lview->AddColumn( LVCFMT_LEFT, 100, "タイムスタンプ" );
Lview->AddColumn( LVCFMT_LEFT, 100, "属性" );
Lview->AddColumn( LVCFMT_LEFT, 100, "モード" );
Lview->AddColumn( LVCFMT_LEFT, 100, "ディレクトリ" );
Lview->AddColumn( LVCFMT_LEFT, 100, "フルパス" );
Lview->AddColumn( LVCFMT_LEFT, 100, "ソート" );
INDIVIDUALINFO ivinfo;
int ret;
ret = UnzipFindFirst(
LboxUnzip::hArc,
szWildName,
&ivinfo
);
FILETIME ft;
SYSTEMTIME st;
int nCount;
LboxString LString;
while( ret == 0 ) {
Lview->AddRow();
LString.operator = (ivinfo.szFileName );
LString.Replace( "/", "\\" );
LString.StripPath( );
LString.Replace( "\\", "/" );
Lview->SetColumnText( 1, &LString );
Lview->SetColumnPrintf( 2, "%d", ivinfo.dwOriginalSize );
Lview->SetColumnPrintf( 3, "%d", ivinfo.dwCompressedSize );
LString.Printf( "%d", ivinfo.wRatio );
if ( LString.Length() > 0 ) {
LString.Insert( ".", LString.Length()-1 );
Lview->SetColumnText( 4, &LString );
}
DosDateTimeToFileTime( ivinfo.wDate, ivinfo.wTime, &ft );
FileTimeToSystemTime( &ft, &st );
Lview->SetColumnPrintf( 5,
"%04d/%02d/%02d %02d:%02d:%02d",
st.wYear,
st.wMonth,
st.wDay,
st.wHour,
st.wMinute,
st.wSecond
);
Lview->SetColumnText( 6, ivinfo.szAttribute );
Lview->SetColumnText( 7, ivinfo.szMode );
LString.operator = (ivinfo.szFileName );
LString.Replace( "/", "\\" );
LString.RemoveFileSpec( );
LString.Replace( "\\", "/" );
Lview->SetColumnText( 8, &LString );
if ( LString.operator == ( "" ) ) {
LString.operator = (" ");
LString.operator += (ivinfo.szFileName);
Lview->SetColumnText( 10, &(LString) );
}
else {
Lview->SetColumnText( 10, ivinfo.szFileName );
}
Lview->SetColumnText( 9, ivinfo.szFileName );
ret = UnzipFindNext(
LboxUnzip::hArc,
&ivinfo
);
}
Lview->Sort( 10, 0 );
nCount = -1;
while( Lview->FindNextRow( &nCount ) ) {
Lview->SetColumnPrintf( 0, "%d", nCount+1 );
}
Lview->Fit();
Lview->SetColumnWidth( 10, 0 );
return true;
}
| |