POINT
    Win32API は GUI を提供するのが Main だが
    OS 本体の機能も提供する
    
    ( Directory Entry の検索 )
    
    GetOpenFileName(); GetSaveFileName(); を利用する
    ( fopen, fread, fwrite とかでも代用可能 )
  DESC
    listbox の使いどころは, file の列挙( default でこの機能をサポートしている )
   Exe のある directory のみが注意
      msg
  LB_DIR ( これ Event|Condition の ID みたいだな...  )
      wp
  表示ファイルの属性( DDL_DIRECTORY | DDL_READWRITE )
      lp
  file 名( wildcard OK * )
■ ReadFile
  SYNTAX
     bool ReadFile(
       HANDLE hFile,
       LPVOID buf,
       DWORD sz,           // 読み込むサイズ
       LPDWORD szRead,    // 読んだサイズ
       LPOVERLAPPED p     // OVERLAPPED ptr
     );
  RET
    !0 : SUCCESS
     0 : FAIL
  DESC
    fread() のように stream タイプ
    読んだ分だけ 前に進む
  char buf[1024];
  DWORD szRead;
  ReadFile( hFile, buf, sz, &szRead, 0 );
  // 必ず閉じること. アクセス権限をとられるらしい
  CloseHandle( hFile );
■ ファイルの時間を調べる
■ GetFileTime
  SYNTAX
    BOOL GetFileTime(
      HANDLE hFile,                 // ファイルのハンドル
      LPFILETIME lpCreationTime,    // 作成日時
      LPFILETIME lpLastAccessTime,  // 最終アクセス日時
      LPFILETIME lpLastWriteTime    // 最終更新日時
    );
    // 不要な情報は 0 をセットする
    // 書き込みをしたら W.r.i.t.e.Time が更新される
    FILETIME time;
    GetFileTime( hFile, 0, 0, &time );
■ CompareFileTime
  // 比較する
  // ret = ( file1 - file2 )  と考えるとわかりやすい
  LONG ret = CompareFileTime( file1, file2 );
■ File に保存する
    CreateFile();
    WriteFile();
    ReadFile();
    CloseHandle();
  SYNTAX
    HANDLE CreateFile(
      LPCTSTR file,
      DWORD modeAcc, // AccessMode 0 : file情報のみ取得 GENERIC_READ | GENERIC_WRITE
      DWORD modeShr, // 共有 mode
      LPSECURITY_ATTRIBUTE s,
      DWORD flagCreate,  // 生成条件 (CREATE_NEW | CREATE_ALWAYS | OPEN_EXISTING | OPEN_ALWAYS )
      DWORD flag,
      HANDLE file
     );
    HANDLE hFile = CreateFile(
                     str,              // Path
                     GENERIC_READ,
                     0,
                     NULL,
                     //OPEN_ALWAYS,   // ない場合は空ファイルができる
                     OPEN_EXISTING, // INVALID_HANDLE_VALUE をかえす
                     FILE_ATTRIBUTE_NORMAL,
                     0
                     );
■ Directory.検索
■ FindFirstFile
  SYNTAX
    HANDLE FindFirstFile(
            LPCTSTR file,           // 検索 path
            LPWIN32_FIND_DATA y     // 結果 
            );
  RET
     !0 : SUCCESS
      0  : ERR
  DESC
    指定 ptn と一致する file(directory) Handle を取得する.
    file 名は [*?] 使用 OK
    HANDLE h = FindFirstFile("D:/data/*", &wfd );
      BAD
    HANDLE h = FindFirstFile("D:/data", &wfd );
      OD
    HANDLE h = FindFirstFile("D:/data/*", &wfd );
      HANDLE h = FindFirstFile( ".\tmp\data", &wfd );
      if ( h == INVALID_HANDLE_VALUE ) {
          myas(0, "");
      }
      struct WIN32_FIND_DATA {
  // FILE_ATTRIBUTE_NORMAL | FILE_ATTRIBUTE_DIRECTORY ...
  DWORD dwFileAttributes;
  FILETIME ftCreationTime;
  FILETIME ftLastAccessTime;
  FILETIME ftLastWriteTime;
  DWORD  nFileSizeHigh;
  DWORD  nFileSizeLow;
  TCHAR cFileName[ MAX_PATH ];
  TCHAR cAlternateFileName[ 14 ];
      };
■ FindNextFile
  SYNTAX
    HANDLE FindNextFile(
            HANDLE h,
            LPWIN32_FIND_DATA y
      );
  RET
    !0 : SUCCESS
     0 : ERR
    // Directory を iterate する
    while ( FindNextFile(h, &i) ) {
    
      if ( y.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) {
        
      }
      
      printf( y.cFileName );
      sz += y.nFileSizeLow;
    }  
■ FindClose
  SYNTAX
    BOOL FindClose( HANDLE h );
  DESC
    不要になった HANDLE を削除
  WARNING
    CloseHandle( h ) と間違えないでね
■ GetCurrentDirectory
  SYNTAX
    GetCurrentDirectory(
              int,    // buf size ( 文字数( TCHAR )単位 )
              LPTSTR  // buf ( FULLPATH でかえる )
               );
■ GetFileInformationByHandle
  SYNTAX
    GetFileInformationByHandle( HANDLE, BY_HANDLE_FILE_INFORMATION );
  DESC
    File に関連する情報をえる
    File Size をもとめて ReadFile() の Buffer を用意するために使う
    
    GetFileInformationByHandle( h, &i );
    i.nFileSizeLow;
■ パスの存在チェック
    #pragma comment(lib,"Shlwapi.lib")
    #include< Shlwapi.h> 
    BOOL PathFileExists(
                          LPCTSTR path
                       );