こんばんは。
書き込みはかなり久しぶりになりますが、またわからないところが出てきましたのでご教
授ください。
大きなファイル(180Mbyte)をコピーするプログラムを作成しています。
スレッドにてファイルコピー処理を実施し、メインのダイアログでコピーするファイル名
を指定したり、ファイルコピー中はプログレスバーを出して、コピー状況を表示させるプ
ログラムを作成しています。
プログラムの流れは以下の通りです。
(1)コピー元ファイル及びコピー先のファイル名を指定
(2)コピー元ファイルサイズをCFile::GetStatusにて取得し、プログレスバーの最大に設
定する
(3)スレッドを起動し、CopyFaile関数にてファイルのコピーを実施
(4)1秒のWinタイマーを起動し、コピー先のファイルサイズを取得し、実施状況をプログ
レスバーに表示
(5)終了したらスレッド及びタイマを終了する
ここで(4)を実施する時に、ファイルサイズを取得すると、コピー開始時から既にコピー
先のファイルサイズがコピー元ファイルサイズと同じになっています。
いろいろ関数を探しているのですが、なかな良いものがありません。
いい方法、関数をご存知の方がいましたらぜひご教授いただきたく、よろしくお願い致し
ます。
開発環境はコンパイラ:VC.net2003 OS:WinXP MFCのダイアログベースで作成しています
CopyFileEx 使ってコールバックで調べられるんじゃない?
nさん回答ありがとうございました。
CopyFileExの関数を使用して、コールバック関数で転送したバイト数を取得することによ
り実現することができました。
また、疑問点が出てきたら書き込みますので、よろしくお願い致します。