ディレクトリをリストビュー表示する前章までのFTPはなんとなくみすぼらしい感じがしました。今回はリストボックスをリストビュー表示に変えてみます。表示するようにします。リストビューに変更するとなんとなく見栄えがします。FTPの機能そのものは今までとまったく同じです。どこをどのように変更すればよいのでしょうか。考えると面倒くさいようにも思えますが、意外に簡単です。作るように変更します。この点も変更が必要です。取得するにはどうすればよいのでしょうか。ファイルに関連した日時を表す3つのメンバ(作成日時・アクセス日時・更新日時)がありました。いずれもFILETIME構造体であらわされています。ファイルタイムとは1601年1月1日からの0.1ミリ秒間隔の64ビット値です。dwLowDateTimeは、ファイルタイムの下位32ビット値です。dwHighDateTimeは、ファイルタイムの上位32ビット値です。ファイルタイムを通常の日時に直すのはめんどうです。便利な関数とかマクロが用意されているはずです。lpSystemTime);名前のとおりファイルタイムをシステムタイムに変換する関数です。lpFileTimeは変換するFILETIME構造体へのポインタです。lpSystemTimeはシステムタイムを受け取るSYSTEMTIME構造体へのポインタです。成功すると0以外を失敗すると0を返します。ローカルファイルタイムに変換する関数です。lpFileTimeはUTCに基づくファイルタイムの入ったFILETIME構造体へのポインタです。lpLocalFileTime変換結果が格納されるFILETIME構造体へのポインタです。成功すると0以外が、失敗すると0が返されます。このくらいの予備知識があると日時付きのディレクトリ表示が可能です。リソース・スクリプトは前章に比べ変更がありません。その他の前準備(comctl32.libのリンク)も忘れないでください。InitInstanceの各関数に変更はありません。0;}WM_CREATEが来たら、コモンコントロールを初期化します。InsertMyColumn関数でリストビューを作ります。マクロで選択されている項目のインデックスを取得します。第108章で解説しています。選択されているのがファイルの時はその旨注意をして何もしません。呼んで表示しなおします。それがだぶるくりっくであるときも同じような処理をします。MyConnect関数に変更はありません。"ダウンロードに失敗しました。ListView_GetItemTextに書き換えました。第110章で解説しています。MyFtpAddressProcの各関数に変更はありません。return;}FTPのカレントディレクトリをリストビューに表示する関数です。LV_ITEM構造体はLVITEM構造体に名前が変わりました。構造体はみなアンダスコアがとれました。ListBox_ResetContentマクロがListView_DeleteAllItemsになりました。);リストビューからすべてのアイテムを削除します。失敗したらそれ以外を返します。ListView_SetItemマクロでリストビューに表示します。変換しないでそのまま表示しているようです。変換してリストビューに表示します。return;}ローカルのカレントディレクトリをリストビューに表示する関数です。やっていることはGetAllFiles関数とほとんど同じです。MyDriveProc関数に変更はありません。"「%s」を「%s」にアップロードします。ListView_GetItemTextマクロに書き換えました。return;}FTPのファイルを削除する関数です。ListView_GetItemTextに書き直しただけです。MyCreateDirProc関数に変更はありません。hList;}リストビューを作る関数です。第198章を参照してください。return;}リストビューにカラムを挿入する関数です。リストビューに変更しただけです。そんなに難しくはないですね。このプログラムを動かしてまず、気の付くことは大変使いにくいことです。それは、リストビューに表示されるファイル等が順不同だからです。このへんを改良してみてください。転載あるいはコンピュータ等のファイルに保存することを禁じます。