ファイルの一覧とファイルの属性の取得

  リストビューのハンドリングに lbClass を使用する



必要なファイル
  • lbClass.lib

  • lbClass.h
  • lbListbox.h
  • lbListView.h
  • lbString.h
  • lbWindow.h


  • WIN32_FIND_DATA
      
    DWORD		dwFileAttributes;	// 属性
    FILETIME	ftCreationTime;		// 作成日時
    FILETIME	ftLastAccessTime;	// 最終アクセス日時
    FILETIME	ftLastWriteTime;	// 最終更新日時
    DWORD		nFileSizeHigh;		// ファイルサイズ(上位32ビット)
    DWORD		nFileSizeLow;		// ファイルサイズ(下位32ビット)
    DWORD		dwReserved0;
    DWORD		dwReserved1;
    TCHAR		cFileName[MAX_PATH];		// ファイル名
    TCHAR		cAlternateFileName[14];		// 8.3形式ファイル名
    
    
      



      About コールバック関数



      
    lbClass *MyDlg;
    lbClass *MyList;
    
    LRESULT CALLBACK About( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
    {
    	int nRow;
    
    	switch( message ) {
    		case WM_INITDIALOG:
    			MyDlg = new lbClass( hDlg );
    			MyDlg->CenterWindow();
    
    			MyList = new lbClass( GetDlgItem( hDlg, IDC_LISTVIEW ) );
    			MyList->LV_AddTitle( "ファイル名", 200 );
    			MyList->LV_AddTitle( "サイズ", 80 );
    			MyList->LV_AddTitle( "更新日", 120 );
    			MyList->LV_AddTitle( "属性", 100 );
    
    			return TRUE;
    
    		case WM_COMMAND:
    			if( LOWORD(wParam) == IDCANCEL ) {
    				delete MyList;
    				delete MyDlg;
    				EndDialog(hDlg, LOWORD(wParam));
    				return TRUE;
    			}
    			if( LOWORD(wParam) == IDOK ) {
    
    				MyList->LV_Reset( );
    
    				HANDLE hFile;
    				BOOL bFirst = true;
    				BOOL bRet;
    				WIN32_FIND_DATA wfd;
    
    				hFile = FindFirstFile( "*.*", &wfd );
    				bRet = true;
    
    				while( hFile != INVALID_HANDLE_VALUE && bRet == (BOOL)true ) {
    
    					nRow = MyList->LV_AddRow();
    					MyList->LV_SetColumn( nRow, 0, wfd.cFileName );
    
    					bRet = FindNextFile( hFile, &wfd );
    
    				}
    				if ( !bRet ) {
    					FindClose( hFile );
    				}
    				return TRUE;
    			}
    			break;
    	}
    	return FALSE;
    }
    
      



      FileTimeToSystemTime 関数を用いて更新日をセットする

      
    MyList->LV_Reset( );
    
    HANDLE hFile;
    BOOL bFirst = true;
    BOOL bRet;
    WIN32_FIND_DATA wfd;
    
    FILETIME ft;
    SYSTEMTIME st;
    char work[128];
    
    hFile = FindFirstFile( "*.*", &wfd );
    bRet = true;
    
    while( hFile != INVALID_HANDLE_VALUE && bRet == (BOOL)true ) {
    
    	FileTimeToLocalFileTime( &(wfd.ftLastWriteTime), &ft );
    	FileTimeToSystemTime( &ft, &st );
    	wsprintf(
    		work,
    		"%02d-%02d-%02d %02d:%02d:%02d",
    		st.wYear,
    		st.wMonth,
    		st.wDay,
    		st.wHour,
    		st.wMinute,
    		st.wSecond
    	);
    
    
    	nRow = MyList->LV_AddRow();
    	MyList->LV_SetColumn( nRow, 0, wfd.cFileName );
    
    	MyList->LV_SetColumn( nRow, 2, work );
    
    	bRet = FindNextFile( hFile, &wfd );
    
    }
    if ( !bRet ) {
    	FindClose( hFile );
    }
    
      



      属性の表示

      
    nRow = MyList->LV_AddRow();
    MyList->LV_SetColumn( nRow, 0, wfd.cFileName );
    MyList->LV_SetColumn( nRow, 2, work );
    
    if ( (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) == FILE_ATTRIBUTE_DIRECTORY ) {
    	MyList->LV_SetColumn( nRow, 3, "ディレクトリ" );
    }
    
    
      










      infoboard   管理者用   
    このエントリーをはてなブックマークに追加





    フリーフォントWEBサービス
    SQLの窓WEBサービス

    SQLの窓フリーソフト

    素材

    一般WEBツールリンク

    SQLの窓

    フリーソフト

    JSライブラリ